Definiera en egenskap i Windows Forms Controls
För en översikt över egenskaper, se Egenskapsöversikt. Det finns några viktiga överväganden när du definierar en egenskap:
Du måste använda attribut för de egenskaper som du definierar. Attribut anger hur designern ska visa en egenskap. Mer information finns i Design-Time Attribut för komponenter.
Om ändringen av egenskapen påverkar kontrollens visuella utseende, anropa då metoden Invalidate (som din kontroll ärver från Control) från
set
-accessorn. Invalidate anropar i sin tur metoden OnPaint, som ritar om kontrollen. Flera anrop till Invalidate resulterar i ett enda anrop till OnPaint för effektivitet.Klassbiblioteket för .NET Framework innehåller typkonverterare för vanliga datatyper som heltal, decimaltal, booleska värden och andra. Syftet med en typkonverterare är vanligtvis att tillhandahålla sträng-till-värde-konvertering (från strängdata till andra datatyper). Vanliga datatyper är associerade med standardtypkonverterare som konverterar värden till strängar och strängar till lämpliga datatyper. Om du definierar en egenskap som är en anpassad datatyp (dvs. icke-standard) måste du använda ett attribut som anger vilken typkonverterare som ska associeras med den egenskapen. Du kan också använda ett attribut för att associera en redigerare av anpassad användargränssnittstyp med en egenskap. En redigerare av användargränssnittstyp tillhandahåller ett användargränssnitt för redigering av en egenskap eller datatyp. En färgväljare är ett exempel på en redigerare av användargränssnittstyp. Exempel på attribut ges i slutet av det här avsnittet.
Notera
Om en typkonverterare eller en typredigerare för användargränssnitt inte är tillgänglig för din egen anpassade egenskap, kan du implementera en enligt beskrivningen i Utöka Design-Time Support.
Följande kodfragment definierar en anpassad egenskap med namnet EndColor
för den anpassade kontrollen 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();
}
}
...
}
Följande kodfragment associerar en typkonverterare och en redigerare av användargränssnittstyp med egenskapen Value
. I det här fallet är Value
ett heltal och har en standardtypkonverterare, men attributet TypeConverterAttribute använder en anpassad typkonverterare (FlashTrackBarValueConverter
) som gör att designern kan visa den som en procentandel. Redigeraren för användargränssnittstyp, FlashTrackBarValueEditor
, tillåter att procentandelen visas visuellt. Det här exemplet visar också att typkonverteraren eller redigeraren som anges av attributet TypeConverterAttribute eller EditorAttribute åsidosätter standardkonverteraren.
<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 {
...
}
Se även
.NET Desktop feedback