Condividi tramite


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