Een eigenschap definiëren in Besturingselementen voor Windows Forms
Zie Eigenschappenoverzichtvoor een overzicht van eigenschappen. Er zijn enkele belangrijke overwegingen bij het definiëren van een eigenschap:
U moet kenmerken toepassen op de eigenschappen die u definieert. Kenmerken geven aan hoe de ontwerper een eigenschap moet weergeven. Zie Design-Time Kenmerken voor onderdelenvoor meer informatie.
Als het wijzigen van de eigenschap van invloed is op de visuele weergave van het besturingselement, roept u de Invalidate-methode aan (die uw besturingselement erft van Control) vanuit de
set
-toegangsfunctie. Invalidate roept op zijn beurt de methode OnPaint aan, waarmee het besturingselement opnieuw wordt getekend. Meerdere aanroepen naar Invalidate resulteren in één aanroep naar OnPaint voor efficiëntie.De .NET Framework-klassebibliotheek biedt typeconversieprogramma's voor algemene gegevenstypen, zoals gehele getallen, decimale getallen, Booleaanse waarden en andere. Het doel van een typeconversieprogramma is over het algemeen om conversie van tekenreeks naar waarde te bieden (van tekenreeksgegevens naar andere gegevenstypen). Algemene gegevenstypen zijn gekoppeld aan standaardtypeconversieprogramma's waarmee waarden worden geconverteerd naar tekenreeksen en tekenreeksen naar de juiste gegevenstypen. Als u een eigenschap definieert die een aangepast (niet-standaard) gegevenstype is, moet u een kenmerk toepassen dat het typeconversieprogramma aan die eigenschap moet koppelen. U kunt ook een attribuut gebruiken om een UI-type editor aan een aangepaste eigenschap te koppelen. Een UI-typeeditor biedt een gebruikersinterface voor het bewerken van een eigenschap of gegevenstype. Een kleurenkiezer is een voorbeeld van een UI-typeeditor. Voorbeelden van kenmerken worden aan het einde van dit onderwerp gegeven.
Notitie
Als een typeconversieprogramma of een editor voor gebruikersinterfacetypen niet beschikbaar is voor uw aangepaste eigenschap, kunt u er een implementeren zoals beschreven in Uitbreiden Design-Time Ondersteuning.
Het volgende codefragment definieert een aangepaste eigenschap met de naam EndColor
voor het aangepaste besturingselement 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();
}
}
...
}
Het volgende codefragment koppelt een typeconversieprogramma en een UI-typeeditor aan de eigenschap Value
. In dit geval is Value
een geheel getal en heeft een standaardtypeconversieprogramma, maar het kenmerk TypeConverterAttribute past een conversieprogramma voor aangepaste typen (FlashTrackBarValueConverter
) toe waarmee de ontwerper het kan weergeven als een percentage. Met de editor voor gebruikersinterfacetypen, FlashTrackBarValueEditor
, kan het percentage visueel worden weergegeven. In dit voorbeeld ziet u ook dat het type conversieprogramma of de editor die is opgegeven door het kenmerk TypeConverterAttribute of EditorAttribute het standaardconversieprogramma overschrijft.
<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 {
...
}
Zie ook
.NET Desktop feedback