0

「選択した色」を持つように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を使用していないことに注意してください。これは、説明しようとしている内容が乱雑になるためです。

4

2 に答える 2

0

拡張プロパティのリセット メソッド シグネチャは次のとおりです。

Public Sub ResetMyProperty(control As Control)
    MyProperty = "Hello World!"
End Sub

コントロール パラメーターを追加して、ShouldSerializeValue メソッドと同様のことを行います。

于 2010-02-19T04:40:04.370 に答える
0

デフォルト値として必要なシステム カラー設定の名前を使用して、属性を使用できます。DefaultValue

<DefaultValue(GetType(Color), "Highlight")>
于 2009-09-14T08:22:21.157 に答える