1. Password representation: [PasswordPropertyText(true)]
2. Implementing the Double type through MyDoubleConverter only displays the two decimal places:
3. Basic type Array: Adding and deleting can only be done through the pop-up collection editor, modifying it can be expanded directly. When the value is null, it can be created through the collection editor;
4. Use TypeConverter to represent objects with strings
5. Hashtable and Dictionary can open the collection editor, but cannot edit it;
6. Use a custom pull-down editing interface
7. Base class type derived class objects: There is no difference from ordinary objects, [TypeConverter(typeof(ExpandableObjectConverter))] is added to the base class;
8. Only the public property can be displayed. Whether it is displayed can be controlled through BrowsableAttribute. Classification is set through CategoryAttribute and DescriptionAttribute is set through DescriptionAttribute. Attribute can be added to Class or attributes. Attribute on attributes has higher priority;
9. When ReadOnlyAttribute is set to true, it will be displayed in gray; if it is invalid for List, you can open the collection editor, and add, delete and modify it in the collection editor; when applied to Array, you cannot open the collection editor, that is, you cannot add, delete, but the Array element can be modified by expanding;
10. String with pull-down options
11. Use UITypeEditor to implement file or directory selection
12. Object Array: Adding and deleting can only be done through the pop-up collection editor, modifying it can be expanded directly. When the value is null, it can be created through the collection editor;
13. Enum will be automatically represented by list box;
14. Dynamic display/hide attributes
15. The validity check of the input is included. If you enter the double value in the int type, a prompt dialog box will pop up;
16. Implement a pop-up editing dialog box. Just change UserControl to Form, EditStyle to Modal, and service.DropDownControl to service.ShowDialog
17. Object: The value displays Object.ToString(); after adding [TypeConverter(typeof(ExpandableObjectConverter))] to Class (can also be added to the attributes) to expand and edit, otherwise it will be grayed out and read-only; nothing can be done without initialization;
18. Object List: Adding and deleting can only be done through the pop-up collection editor. When the value is null, the collection editor can be opened, but the result cannot be saved, so it must be initialized;
19. Basic type List: Add, delete and modify can only be done through the collection editor. When the value is null, the collection editor can be opened, but the result cannot be saved, so it must be initialized;