如何保存复杂属性在设计时输入的值?

时间:2010-10-27 15:06:49

标签: .net properties typeconverter uitypeeditor

在设计时为复杂属性实现自定义编辑器时,我仍在学习绳索。

作为一个简单的起始点,我正在尝试对ICollection<string>类型的属性进行设计时编辑。

到目前为止我所做的是:

  • 写了一个StringsEditor类,它派生自UITypeEditor并显示一个下拉列表,开发人员可以在不同的行中输入一串字符串,然后将这些字符串添加到集合中。这很好。
  • 写了一个StringsConverter类,它派生自TypeConverter并在类型为stringICollection<string>的对象之间进行转换(以及任何实现T的类型ICollection<string> {1}})以便当开发人员关闭StringsEditor显示的下拉列表时,框中显示的文本是逗号分隔的输入字符串列表。重新打开下拉列表会再次显示字符串,每行一个。

到目前为止,我的工作成果是,在设计时,一切似乎都很有效。用户可以修改属性,在其内容中添加和删除字符串,并且属性网格中显示的文本与集合中的内容相匹配。

我还没弄清楚 - 这并不让我感到惊讶 - 是如何实际保存此系列超出设计时间,以便输入的值...你知道, 。我的理解是,目前,属性正在设计时(由我)编辑,但由于我所应用的任何更改都没有对控件的生成InitializeComponent方法产生任何影响,因此对该属性没有任何影响。 class 我正在设计(只有我的IDE当前显示的实例)。

但很明显,可以将您的值放入InitializeComponent调用中。事实上,我偶然发现这对于DirectoryInfo类型的属性具有适当的UITypeEditor神奇地“正常工作”(我创建了另一个名为DirectoryEditor的编辑器,它只显示一个{ {1}}并为所选的任何路径提供FolderBrowserDialog对象,这令人惊讶 最终更新了类的DirectoryInfo方法。所以我知道可以做到。我只是想找人指点我正确的方向。

0 个答案:

没有答案