.net 如何保存在设计时为复杂特性输入的值?
当涉及到在设计时为复杂属性实现自定义编辑器时,我仍在学习诀窍 作为一个简单的起点,我尝试对类型为.net 如何保存在设计时为复杂特性输入的值?,.net,properties,typeconverter,uitypeeditor,.net,Properties,Typeconverter,Uitypeeditor,当涉及到在设计时为复杂属性实现自定义编辑器时,我仍在学习诀窍 作为一个简单的起点,我尝试对类型为ICollection的属性启用设计时编辑 到目前为止,我所做的是: 编写了一个StringsEditor类,该类派生自UITypeEditor,并显示一个下拉列表,开发人员可以在其中的单独行上输入一组字符串,这些字符串随后添加到集合中。这个很好用 编写了一个StringsConverter类,该类派生自TypeConverter,并在string类型的对象和ICollection类型的对象之间进行
ICollection
的属性启用设计时编辑
到目前为止,我所做的是:
- 编写了一个
类,该类派生自StringsEditor
,并显示一个下拉列表,开发人员可以在其中的单独行上输入一组字符串,这些字符串随后添加到集合中。这个很好用UITypeEditor
- 编写了一个
类,该类派生自StringsConverter
,并在TypeConverter
类型的对象和string
类型的对象之间进行转换(当然,实现ICollection
的任何类型ICollection
),这样当开发人员关闭T
显示的下拉菜单时,框中显示的文本是以逗号分隔的输入字符串列表。重新打开下拉列表将再次显示字符串,每行显示一个字符串StringsEditor
InitializeComponent
方法产生任何影响,因此对我正在设计的类没有任何影响(只有我的IDE当前显示的实例)
但显然,可以将您的值放入
InitializeComponent
调用中。事实上,我只是碰巧发现,对于DirectoryInfo
类型的属性,使用适当的UITypeEditor
(我制作了另一个名为DirectoryEditor
的编辑器,它只显示一个folderbrowser对话框
,并为选择的任何路径提供一个DirectoryInfo
对象,这令人惊讶地最终更新了类的InitializeComponent
方法)。所以我知道这是可以做到的。我只是想找个人给我指出正确的方向。您是否用[DesignerSerializationVisibility(DesignerSerializationVisibility.content)]标记了将集合公开为内容属性的属性属性?我认为集合需要用此标记才能序列化。您是否用[DesignerSerializationVisibility(DesignerSerializationVisibility.content)]属性将公开集合的属性标记为内容属性?我认为集合需要用此标记才能序列化。