2009年4月28日火曜日

.NET カスタムコントロールのプロパティウインドウのカスタマイズ

カスタムコントロールのプロパティウインドウをカスタマイズするには属性を設定します。

DefaultProperty属性
クラスの「既定のプロパティ」を指定する。
この属性はクラスに指定する。  
この属性で指定されたプロパティは、PropertyGridコントロールが表示されるときに最初にフォーカスが設定される。

DefaultValue属性
プロパティの「既定の値」を指定する。

ReadOnly属性
この属性をTrueに指定すると、PropertyGridコントロールで編集することができなくなる。
ただし、コードから設定することは可能である

Browsable属性(Boolean値)
この属性をFalseに指定すると、PropertyGridコントロールに表示されなくなる。

Description属性)
プロパティの「概要説明」を指定する。

Category属性
プロパティの「カテゴリ」を指定する。

EditorBrowsable属性
インテリセンス上での表示方法を指定する。


<Browsable(False), EditorBrowsable(EditorBrowsableState.Advanced)> _
Public Shadows Property Image() As System.Drawing.Image
Get
Return MyBase.Image
End Get
Set(ByVal value As System.Drawing.Image)
MyBase.Image = value
End Set
End Property


※既存のプロパティはOverridesかShdowsで再定義し、属性を設定する。
このときPubicをPrivateなどと修飾子を変更すると属性が生きない。

また、DefaultValue属性では既定値にならない場合もある。
この場合はShouldSerializeXxxxメソッド、ResetXxxxメソッドを使用する。(Xxxxはプロパティ名)
  Protected Shared Shadows DefaultText As String = "ABC"

Public Shadows Property Text() As String
Get
Return MyBase.Text
End Get
Set(ByVal value As String)
MyBase.Text = value
End Set
End Property

Public Function ShouldSerializeText() As Boolean
Return Not (DefaultText.Equals(MyBase.Text))
End Function

Public Shadows Sub ResetText()
Me.Text = DefaultText
End Sub

0 件のコメント: