「選択した色」を持つようにTextBoxを拡張するIExtenderProviderのExtenderコンポーネントがあります。この色のデフォルト値は「ハイライト」です。ユーザーは、エクステンダーのプロパティグリッドで「デフォルトで選択された色」を変更できます。拡張TextBoxに「選択された色」が定義されていない場合は、指定された「デフォルトの削除された色」の値が使用されます。
プログラマーがTextBoxの「選択された色」を変更した場合、エクステンダーコンポーネントで定義されているように、「選択された色」を「デフォルトの選択された色」にリセットする「リセット」コマンドをプロパティグリッドに提供します。
「reset」コマンドを拡張コントロールのプロパティグリッド値に追加してから、その拡張プロパティをエクステンダーによって提供されるデフォルト値に「リセット」するにはどうすればよいですか?
ユーザーが拡張プロパティを右クリックし、[リセット]を選択して、プロパティをエクステンダーで定義されているデフォルト値に復元できるようにします。
(http://msdn.microsoft.com/en-us/library/53b8022e.aspxのShouldSerializeメソッドとResetメソッドを使用したデフォルト値の定義を参照してください)明らかに、これは機能しません。
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
定数ではないので、私にはできません。)
【説明】エクステンダー自体に特性があります。これらは、拡張コントロールのデフォルト値です。プログラマーが特定の拡張コントロールに「オーバーライド」値を指定しない場合、デフォルト値が使用されます。エクステンダーの作成者である私は、デフォルトで「ハイライト」などの特定の値に設定されていますが、エクステンダーのユーザーであるあなたがデフォルトで「赤」に設定したい場合は、エクステンダーのプロパティを変更する必要があります。これで、この拡張プロパティを定義しなかった拡張コントロールは「赤」を使用します。ただし、値を指定したコントロールは、この「赤」に「リセット」することはできません。DefaultValueは適用されません。(現在、デフォルトを設定する唯一の方法は、デザイナーからコードを削除することです。)
助言がありますか?
上記のコードフラグメントではColorを使用していないことに注意してください。これは、説明しようとしている内容が乱雑になるためです。