我有一个扩展器 (IExtenderProvider),它使用附加属性扩展了某些类型的控件。对于这些属性之一,我编写了一个 UITypeEditor。到目前为止,一切正常。
扩展器本身也有几个属性,我试图将它们用作 UITypeEditor 的一种默认值。我想要做的是能够在扩展器本身(而不是扩展控件)上设置一个属性,并且当我为扩展控件上的一个附加属性打开 UITypeEditor 时,我想在UITypeEditor 为扩展器上的属性值。
一个简单的例子:ExtenderProvider 有一个属性 DefaultExtendedValue。在表单上,我将此属性的值设置为“我的值”。扩展控件通过提供程序具有带有 UITypeEditor 的属性 ExtendedValue。当我打开属性 ExtendedValue 的编辑器时,默认(初始)值应设置为“我的值”。
在我看来,执行此操作的最佳位置是 UITypeEditor.EditValue,就在调用 IWindowsFormsEditorService.DropDownControl 或 .ShowDialog 之前。
唯一的问题是我不能(或者我还没有发现如何)在 EditValue 中获取扩展器提供程序本身,以读取相关属性的值并将其设置在 UITypeEditor 中。上下文为我提供了扩展控制,但在这种情况下,这对我没有用。
有什么办法可以实现我正在尝试的吗?任何帮助表示赞赏!
谢谢汤姆
@samjudson:这不是一个坏主意,但不幸的是它并没有完全让我到达那里。我真的希望能够为扩展器提供程序的每个实例单独设置此默认值。(对于不同的扩展控件组,我可能在一个表单上有多个不同的值。)