Definizione di una proprietà nei controlli Windows Form
Per una panoramica delle proprietà, vedere Panoramica delle proprietà . Quando si definisce una proprietà, è necessario tenere presenti alcune considerazioni importanti:
È necessario applicare attributi alle proprietà definite. Gli attributi specificano come il progettista dovrebbe visualizzare una proprietà. Per informazioni dettagliate, vedere attributi Design-Time per i componenti.
Se la modifica della proprietà influisce sulla visualizzazione del controllo, chiamare il metodo Invalidate (che il controllo eredita da Control) dal metodo di accesso
set
. Invalidate a sua volta chiama il metodo OnPaint, che ridisegna il controllo. Più chiamate a Invalidate comportano una singola chiamata a OnPaint per garantire l'efficienza.La libreria di classi .NET Framework fornisce convertitori di tipi per tipi di dati comuni, ad esempio numeri interi, numeri decimali, valori booleani e altri. Lo scopo di un convertitore di tipi è in genere fornire la conversione da stringa a valore (da dati stringa ad altri tipi di dati). I tipi di dati comuni sono associati ai convertitori di tipi predefiniti che convertono i valori in stringhe e stringhe nei tipi di dati appropriati. Se si definisce una proprietà che è un tipo di dati personalizzato (ovvero non standard), sarà necessario applicare un attributo che specifica il convertitore di tipi da associare a tale proprietà. È anche possibile usare un attributo per associare un editor di tipi di interfaccia utente personalizzato a una proprietà . Un editor dei tipi di interfaccia utente fornisce un'interfaccia utente per la modifica di una proprietà o di un tipo di dati. Un selettore di colori è un esempio di editor di tipo UI. Alla fine di questo argomento vengono forniti esempi di attributi.
Nota
Se un convertitore di tipo o un editor di tipo UI non è disponibile per la tua proprietà personalizzata, è possibile implementarne uno, come descritto in Estendendo il supporto Design-Time.
Il frammento di codice seguente definisce una proprietà personalizzata denominata EndColor
per il controllo personalizzato 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();
}
}
...
}
Il frammento di codice seguente associa un convertitore di tipi e un editor dei tipi di interfaccia utente alla proprietà Value
. In questo caso Value
è un numero intero e dispone di un convertitore di tipi predefinito, ma l'attributo TypeConverterAttribute applica un convertitore di tipi personalizzato (FlashTrackBarValueConverter
) che consente alla finestra di progettazione di visualizzarla come percentuale. L'editor dei tipi di interfaccia utente, FlashTrackBarValueEditor
, consente di visualizzare visivamente la percentuale. Questo esempio mostra anche che il convertitore di tipi o l'editor specificato dall'attributo TypeConverterAttribute o EditorAttribute esegue l'override del convertitore predefinito.
<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 {
...
}
Vedere anche
.NET Desktop feedback