4

PropertyGridコントロールで使用するカスタム クラスを定義しています。たとえば、プロパティの 1 つが次のように定義されているとします。

[CategoryAttribute("Section Name"),
DefaultValueAttribute("Default value"),
DescriptionAttribute("My property description")]
public string MyPropertyName
{
    get { return _MyPropertyName; }
    set { _MyPropertyName = value; }
}

private string _MyPropertyName;

ご覧のとおりDefaultValueAttribute、プロパティのデフォルト値を定義します。このようなデフォルト値は、次の 2 つの場合に使用されます。

  1. このプロパティ値がデフォルト値から変更された場合、 PropertyGridコントロールはそれを太字で表示します。

  2. ResetSelectedPropertyのメソッドを呼び出すPropertyGridと、選択したセルにそのデフォルト値が適用されます。

の 1 つの制限を除いて、この概念は正常に機能しDefaultValueAttributeます。定数値のみを受け入れます。だから私は興味があります.たとえば、コンストラクターから、またはコードの後で動的に設定できますか?

編集:次を読むことができるこのコードを見つけることができましたDefaultValueAttribute:

AttributeCollection attributes = TypeDescriptor.GetProperties(this)["MyPropertyName"].Attributes;
DefaultValueAttribute myAttribute = (DefaultValueAttribute)attributes[typeof(DefaultValueAttribute)];
string strDefaultValue = (string)myAttribute.Value;

問題は、どのように設定するかです。

4

1 に答える 1