Definieren einer Eigenschaft in Windows Forms-Steuerelementen

Eine Übersicht über Eigenschaften finden Sie unter Übersicht über Eigenschaften. Es gibt einige wichtige Überlegungen beim Definieren einer Eigenschaft:

  • Sie müssen auf die Eigenschaften, die Sie definieren, Attribute anwenden. Attribute geben an, wie der Designer eine Eigenschaft anzeigen sollte. Einzelheiten hierzu finden Sie unter Attribute für Komponenten in der Entwurfszeit.

  • Wenn das Ändern der Eigenschaft Auswirkungen auf die visuelle Darstellung des Steuerelements hat, rufen Sie die Methode Invalidate (die das Steuerelement von Control erbt) über den set-Accessor auf. Invalidate ruft seinerseits die OnPaint-Methode auf, die das Steuerelement neu zeichnet. Mehrere Aufrufe von Invalidate führen aus Effizienzgründen zu einem einzigen Aufruf von OnPaint.

  • Die .NET Framework-Klassenbibliothek stellt Typkonverter für häufig verwendete Datentypen wie z.B. ganze Zahlen, Dezimalzahlen, boolesche Werte und andere bereit. Der Zweck eines Typkonverters ist im Allgemeinen, die Konvertierung von einer Zeichenfolge in einen Wert (von Zeichenfolgedaten in andere Datentypen) bereitzustellen. Allgemeine Datentypen sind Standardtypkonverter, die Werte in Zeichenfolgen und Zeichenfolgen in die entsprechenden Datentypen konvertieren. Wenn Sie eine Eigenschaft definieren (d.h. nicht dem Standard entsprechend), die einen benutzerdefinierten Datentyp aufweist, müssen Sie ein Attribut anwenden, das den dieser Eigenschaft zuzuordnenden Typkonverter angibt. Sie können ein Attribut auch verwenden, um einer Eigenschaft einen benutzerdefinierten Typeditor für die Benutzeroberfläche zuzuordnen. Ein Typeditor für die Benutzeroberfläche stellt eine Benutzeroberfläche für die Bearbeitung einer Eigenschaft oder eines Datentyps bereit. So ist beispielsweise ein Farbwähler ein Typeditor für die Benutzeroberfläche. Beispiele für Attribute werden am Ende dieses Themas angegeben.

    Hinweis

    Wenn für Ihre benutzerdefinierte Eigenschaft kein Typkonverter oder Typeditor für die Benutzeroberfläche verfügbar ist, können Sie einen implementieren, wie unter Erweitern der Entwurfszeitunterstützung.

Das folgende Codefragment definiert eine benutzerdefinierte Eigenschaft mit dem Namen EndColor für das benutzerdefinierte Steuerelement 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();  
      }  
   }  
   ...  
}  

Das folgende Codefragment ordnet der Eigenschaft Value einen Typkonverter und einen Typeditor für die Benutzeroberfläche zu. In diesem Fall ist Value eine ganze Zahl und verfügt über einen Standardtypkonverter. Das Attribut TypeConverterAttribute wendet jedoch einen benutzerdefinierten Typkonverter (FlashTrackBarValueConverter) an, der dem Designer die Anzeige als Prozentwert ermöglicht. Im Typeditor für die Benutzeroberfläche, FlashTrackBarValueEditor, kann der Prozentwert visuell angezeigt werden. Dieses Beispiel zeigt zudem, dass der von dem Attribut TypeConverterAttribute oder EditorAttribute angegebene Typkonverter oder -editor den Standardkonverter überschreibt.

<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 {  
...  
}  

Weitere Informationen