Windows フォーム コントロールのプロパティの定義Defining a Property in Windows Forms Controls

プロパティの概要については、「プロパティの概要」を参照してください。For an overview of properties, see Properties Overview. プロパティを定義するときには、いくつかの重要な考慮事項があります。There are a few important considerations when defining a property:

  • 定義するプロパティに属性を適用する必要があります。You must apply attributes to the properties you define. 属性によって、デザイナーでプロパティがどのように表示されるかが指定されます。Attributes specify how the designer should display a property. 詳細については、「コンポーネントのデザイン時属性」を参照してください。For details, see Design-Time Attributes for Components.

  • プロパティを変更するコントロールの視覚的な表示に影響する場合、Invalidateメソッド (から継承したコントロールをControl) から、setアクセサー。If changing the property affects the visual display of the control, call the Invalidate method (that your control inherits from Control) from the set accessor. Invalidate 呼び出し、OnPaintメソッドで、コントロールを再描画します。Invalidate in turn calls the OnPaint method, which redraws the control. 複数回呼び出すInvalidateを 1 回呼び出すと、OnPaint効率が向上します。Multiple calls to Invalidate result in a single call to OnPaint for efficiency.

  • .NET Framework クラス ライブラリでは、整数、10 進数、ブール値など、一般的なデータ型に対応する型コンバーターを使用できます。The .NET Framework class library provides type converters for common data types such as integers, decimal numbers, Boolean values, and others. 型コンバーターは、一般に文字列から値への変換を行うために使用されます (文字列データから他のデータ型に変換)。The purpose of a type converter is generally to provide string-to-value conversion (from string data to other data types). 一般的なデータ型は、値を文字列に変換し、文字列を適切なデータ型に変換する既定の型コンバーターに関連付けられています。Common data types are associated with default type converters that convert values into strings and strings into the appropriate data types. カスタム (つまり、非標準的な) データ型であるプロパティを定義する場合、そのプロパティに関連付けられる型コンバーターを指定する属性を適用する必要があります。If you define a property that is a custom (that is, nonstandard) data type, you will have to apply an attribute that specifies the type converter to associate with that property. また、属性を使用してカスタム UI 型エディターとプロパティを関連付けることもできます。You can also use an attribute to associate a custom UI type editor with a property. UI 型エディターには、プロパティやデータ型を編集するためのユーザー インターフェイスが備わっています。A UI type editor provides a user interface for editing a property or data type. たとえば、カラー ピッカーなどの UI 型エディターがあります。A color picker is an example of a UI type editor. 属性の例は、このトピックの最後に記載されています。Examples of attributes are given at the end of this topic.

    注意

    型コンバーターまたは UI 型エディターをカスタム プロパティに使用できない場合、「デザイン時サポートの拡張」に示されているものを実装できます。If a type converter or a UI type editor is not available for your custom property, you can implement one as described in Extending Design-Time Support.

次のコード フラグメントは、カスタム コントロール FlashTrackBar に対して EndColor という名前のカスタム プロパティを定義します。The following code fragment defines a custom property named EndColor for the custom control FlashTrackBar.

Public Class FlashTrackBar  
   Inherits Control  
   ...  
   ' Private data member that backs the EndColor property.  
   Private _endColor As Color = Color.LimeGreen  
  
   ' The Category attribute tells the designer to display  
   ' it in the Flash grouping.   
   ' The Description attribute provides a description of  
   ' the property.   
   <Category("Flash"), _  
   Description("The ending color of the bar.")>  _  
   Public Property EndColor() As Color  
      ' The public property EndColor accesses _endColor.  
      Get  
         Return _endColor  
      End Get  
      Set  
         _endColor = value  
         If Not (baseBackground Is Nothing) And showGradient Then  
            baseBackground.Dispose()  
            baseBackground = Nothing  
         End If  
         ' The Invalidate method calls the OnPaint method, which redraws    
         ' the control.  
         Invalidate()  
      End Set  
   End Property  
   ...  
End Class  
public class FlashTrackBar : Control {  
   ...  
   // Private data member that backs the EndColor property.  
   private Color endColor = Color.LimeGreen;  
   // The Category attribute tells the designer to display  
   // it in the Flash grouping.   
   // The Description attribute provides a description of  
   // the property.   
   [  
   Category("Flash"),  
   Description("The ending color of the bar.")  
   ]  
   // The public property EndColor accesses endColor.  
   public Color EndColor {  
      get {  
         return endColor;  
      }  
      set {  
         endColor = value;  
         if (baseBackground != null && showGradient) {  
            baseBackground.Dispose();  
            baseBackground = null;  
         }  
         // The Invalidate method calls the OnPaint method, which redraws   
         // the control.  
         Invalidate();  
      }  
   }  
   ...  
}  

次のコード フラグメントは、型コンバーターと UI 型エディターをプロパティ Value に関連付けます。The following code fragment associates a type converter and a UI type editor with the property Value. ここでValueは integer で、既定の型コンバーターしますが、TypeConverterAttribute属性には、カスタム型コンバーターが適用されます (FlashTrackBarValueConverter) に対する比率として表示するデザイナーができるようにします。In this case Value is an integer and has a default type converter, but the TypeConverterAttribute attribute applies a custom type converter (FlashTrackBarValueConverter) that enables the designer to display it as a percentage. UI 型エディター FlashTrackBarValueEditor により、そのパーセントを視覚的に表示できます。The UI type editor, FlashTrackBarValueEditor, allows the percentage to be displayed visually. この例も示している型コンバーターまたはエディターで指定された、TypeConverterAttributeまたはEditorAttribute属性に既定のコンバーターよりも優先されます。This example also shows that the type converter or editor specified by the TypeConverterAttribute or EditorAttribute attribute overrides the default converter.

<Category("Flash"), _  
TypeConverter(GetType(FlashTrackBarValueConverter)), _  
Editor(GetType(FlashTrackBarValueEditor), _  
GetType(UITypeEditor)), _  
Description("The current value of the track bar.  You can enter an actual value or a percentage.")>  _  
Public ReadOnly Property Value() As Integer  
...  
End Property  
[  
Category("Flash"),   
TypeConverter(typeof(FlashTrackBarValueConverter)),  
Editor(typeof(FlashTrackBarValueEditor), typeof(UITypeEditor)),  
Description("The current value of the track bar.  You can enter an actual value or a percentage.")  
]  
public int Value {  
...  
}  

関連項目See also