我有IExtenderProvider的扩展组件,它扩展文本框以具有“选定颜色”。此颜色的默认值是“突出显示”。用户可以更改扩展器属性网格中的“默认选定颜色”。如果扩展文本框未定义“选定颜色”,则将使用指定的“默认删除颜色”值。
如果程序员更改了文本框的“选定颜色”,我想在属性网格中提供“重置”命令,将“选定颜色”重置为“默认选定颜色”,如扩展器组件中定义的那样。
如何将“reset”命令添加到扩展控件的属性网格值,然后将该扩展属性“reset”为扩展程序提供的默认值?
我想允许用户右键单击
扩展属性
并选择
重置
将属性还原为扩展程序中定义的默认值。
(见
Defining Default Values with the ShouldSerialize and Reset Methods
在
http://msdn.microsoft.com/en-us/library/53b8022e.aspx
)
显然,这是行不通的。
Public Sub ResetGetMyProperty()
MyProperty = "Hello World!"
End Sub
我不能使用以下内容,因为这是为了扩展程序属性上的“重置”。
Public Sub ResetMyProperty()
MyProperty = "Hello World!"
End Sub
我不能用
DefaultValue
如下图所示,因为它需要一个常量,而不是这样,因为程序员可以更改默认值。
<DefaultValue("Hello World!")> _
Public Sub GetMyProperty(control As Control) As String
Return _extendees(control).MyProperty
End Sub
我需要类似的东西
<DefaultValue(Me.Property)>
因为me.property是程序员通过属性网格指定的值。(我做不到,因为
Me.Property
不是常量。)
[澄清]
扩展程序本身具有属性。这些是任何扩展控件的默认值。如果程序员没有为特定的扩展控件指定“override”值,那么将使用默认值。作为扩展器的作者,我默认为一个特定的值,称为“highlight”,但作为扩展器的用户,您希望默认为“red”,您必须更改扩展器的属性。现在,任何未定义此扩展属性的扩展控件都将使用“红色”。但是,任何指定了值的控件都不能“重置”为这个“红色”。默认值不适用。(目前,设置默认值的唯一方法是从设计器中删除代码。)
有什么建议吗?
请注意,我在上面的代码片段中不使用颜色,因为它混淆了我试图说明的内容。