Sdílet prostřednictvím


Definování vlastnosti v ovládacích prvcích Windows Forms

Přehled vlastností najdete v tématu Přehled vlastností. Při definování vlastnosti je potřeba vzít v úvahu několik důležitých aspektů:

  • Na vlastnosti, které definujete, musíte použít atributy. Atributy určují, jak má návrhář zobrazit vlastnost. Podrobnosti najdete v tématu Design-Time Atributy komponent.

  • Pokud změna vlastnosti ovlivňuje vizuální zobrazení ovládacího prvku, zavolejte metodu Invalidate (kterou ovládací prvek dědí z Control) z set přístupového objektu. Invalidate zase volá metodu OnPaint, která překreslí ovládací prvek. Více volání Invalidate vede k jednomu volání OnPaint pro zajištění efektivity.

  • Knihovna tříd rozhraní .NET Framework poskytuje převaděče typů pro běžné datové typy, jako jsou celá čísla, desetinná čísla, logické hodnoty a další. Účelem převaděče typů je obecně poskytnout převod typu na hodnotu (z řetězcových dat na jiné datové typy). Běžné datové typy jsou přidruženy k výchozím převaděčům typů, které převádějí hodnoty na řetězce a řetězce na příslušné datové typy. Pokud definujete vlastnost, která je nestandardním (tj. vlastním) datovým typem, budete muset použít atribut, který určuje převaděč typů pro přidružení k této vlastnosti. Pomocí atributu můžete také přidružit vlastní editor typů uživatelského rozhraní k vlastnosti. Editor typů uživatelského rozhraní poskytuje uživatelské rozhraní pro úpravy vlastnosti nebo datového typu. Výběr barvy je příkladem editoru typů uživatelského rozhraní. Příklady atributů jsou uvedeny na konci tohoto tématu.

    Poznámka

    Pokud pro vlastní vlastnost není k dispozici převaděč typů nebo editor typů uživatelského rozhraní, můžete některý implementovat, jak je popsáno v tématu Rozšíření podpory Design-Time.

Následující fragment kódu definuje vlastní vlastnost s názvem EndColor pro vlastní ovládací prvek 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();  
      }  
   }  
   ...  
}  

Následující fragment kódu přidruží převaděč typů a editor typů uživatelského rozhraní k vlastnosti Value. V tomto případě Value je celé číslo a má výchozí převaděč typů, ale atribut TypeConverterAttribute použije převaděč vlastního typu (FlashTrackBarValueConverter), který návrháři umožňuje zobrazit ho jako procento. Editor typů uživatelského rozhraní FlashTrackBarValueEditorumožňuje vizuálně zobrazovat procento. Tento příklad také ukazuje, že převaděč typů nebo editor určený atributem TypeConverterAttribute nebo EditorAttribute přepíše výchozí typový převaděč.

<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 {  
...  
}  

Viz také