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
.NET Desktop feedback