Sdílet prostřednictvím


Atributy a podpora při návrhu

Rozšíření podpory návrhu jsou obvykle implementovány v kódu, který existuje nezávisle kód pro komponentu.Různé atributy lze přidružit typ nebo jednotlivých členů typu poskytovatelů podpory návrhu.

Atributy pro přidružení podporu návrhu

A DesignerAttribute associates návrháře s typem.A TypeConverterAttribute přidružuje typ nebo typ člena typu převaděč.EditorAttribute Associates typ editor uživatelského rozhraní typu nebo typ člena.

Atributy pro přizpůsobení inicializace součásti

Můžete určit výchozí hodnotu pro vlastnost při načtení komponenty v době návrhu použitím nastavit DefaultValueAttribute vlastnosti.A DefaultValueAttribute přepíše hodnotu nastavit kódem inicializace součásti v době návrhu, ale atribut nezmění nastavenou návrhářem.

Atributy pro vlastní nastavení okna vlastnosti chování

Můžete určit, zda vlastnost nebo událost by měly být uvedeny v Vlastnosti použitím okna BrowsableAttribute ji.Můžete také změnit sadu vlastností a událostí vystavených Vlastnosti okna v době návrhu pomocí návrháře, který implementuje IDesignerFilter rozhraní.Můžete určit kategorie, pod kterým by měl být uveden vlastnost nebo událost v Vlastnosti použitím okna CategoryAttribute na vlastnost nebo událost.Můžete zadat popis zobrazený pro vlastnost nebo událost v Vlastnosti použitím okna DescriptionAttribute na vlastnost nebo událost.

Můžete určit, zda vlastnost lze nastavit pouze v době návrhu použitím DesignOnlyAttribute vlastnosti.Můžete určit, zda vlastnost je jen pro čtení nebo zápisu v době návrhu použitím ReadOnlyAttribute vlastnosti.

Můžete určit, zda by měly být uvedeny vlastnost s názvem v závorkách Vlastnosti použitím okna ParenthesizePropertyNameAttribute s hodnotou vlastnosti true.

Můžete určit, zda je vlastnost, která má vnořené nebo podřízené, vlastnosti by měly být oznámeny při změně hodnoty vlastnosti vnořených použitím NotifyParentPropertyAttribute na vnořené vlastnost, která by měla zvýšit oznámení.

Můžete určit, zda aktualizovat vlastnosti pro součásti, aktualizovat žádné vlastnosti nebo zobrazení návrháře by překreslit použitím RefreshPropertiesAttribute s vhodného RefreshProperties hodnotu pro vlastnost nebo událost.

Atributy pro přizpůsobení chování serializace návrhu

Můžete určit, zda jsou hodnoty vlastnosti serializovat nebo zda jsou hodnoty vlastností kolekce serializovat použitím DesignerSerializationVisibilityAttribute s vhodného DesignerSerializationVisibility hodnota výčtu vlastnosti.Existuje rozsáhlá podpora pro tento úkol v aplikaci Visual Studio.Walkthrough: Serializing Collections of Standard Types with the DesignerSerializationVisibilityAttribute

Můžete určit, že je typ serializovatelný použitím SerializableAttribute typu.Můžete poskytnout vlastní serializaci implementací ISerializable rozhraní nebo poskytnout vlastní převodník do sériového tvaru.Další informace o serializace viz Serializace v rozhraní .NET Framework.

Další informace o atributech běžně používaných prvků návrhu, viz Atributy doby návrhu pro komponenty.

Použití atributů

Atributy návrhu jsou použity vlastnosti, události, tříd a dokonce i sestavení.Následující příklad kódu ukazuje atributy do třídy a vlastnosti a události.

' The attribute is the element in angle brackets, and the parameters 
' in the attribute syntax are arguments of the constructor 
' of the attribute class.
' 
' Attributes applied at the class level.
<DefaultEvent("ValueChanged"), _
DefaultProperty("Number")> _
Public Class MyControl
   Inherits Control   
   ...
   ' Attribute applied to a property.
   <DefaultValue(False)> _
   Public Shadows ReadOnly Property TabStop() As Boolean
      ...
   End Property
   
   ' Attribute applied to a property.
   <CategoryAttribute("Data")> _
   Public ReadOnly Property Number() As Integer
      ...
   End Property 
   
   ' Attribute applied to an event.
   <Description("Raised when the Value displayed changes.")>  _
   Public Event ValueChanged As EventHandler
   ...
End Class
// The attribute is the element in brackets, and the parameters in 
// the attribute syntax are arguments of the constructor 
// of the attribute class.
// 
// Attributes applied at the class level.
[DefaultEvent("ValueChanged")]
[DefaultProperty("Number")]
public class MyControl : Control {
   ...
   // Attribute applied to a property.
   [DefaultValue(false)]
   public new bool TabStop {...
   }

   // Attribute applied to a property.
   [CategoryAttribute("Data")]
   public int Number {...}

   // Attribute applied to an event.
   [Description("Raised when the Value displayed changes.")]
   public event EventHandler ValueChanged;
}

Dle úmluvy jsou atribut třídy s názvem Název_atributuatributu.System.ComponentModel Obor názvů, obsahuje mnoho základní atribut třídy.

Atributy návrhu a dědičnost

Pokud komponenta nebo ovládací prvek se odvozují z základní součást, která má atributy návrhu, komponenta dědí funkce návrhu základní třídy.Pokud je dostatečné pro vaše účely základní funkce, nemáte znovu použít atributy.Můžete však změnit atributy stejného typu nebo odvozené součásti použije další atributy.Následující fragment kódu ukazuje vlastní ovládací prvek, který změní Text vlastnosti zděděné z Control přepsáním BrowsableAttribute atribut v základní třídě.

Public Class MyControl
   Inherits Control
   ' The base class has [Browsable(true)] applied to the Text property.
   <Browsable(False)>  _
   Public Overrides Property [Text]() As String
      ...
   End Property 
   ...
End Class
public class MyControl : Control {
// The base class has [Browsable(true)] applied to the Text property.
[Browsable(false)]
 public override string Text {...}
...
}

Použití převaděče typ uživatelského rozhraní editoru typu nebo Návrhář atributu

Chcete-li přidružit typ nebo typ člena v návrhu support provider použije v řádku nad třídy prohlášení nebo prohlášení členských vhodný typ atributu.Následující kód zobrazuje příklad TypeConverterAttribute u typu.

<TypeConverter(GetType(MyColorConverter)), _
Editor(GetType(MyColorEditor), GetType(UITypeEditor))> _
Structure MyColor
   ...
End Structure
[ TypeConverter(typeof(MyColorConverter))]
[ Editor(typeof(MyColorEditor), typeof(UITypeEditor))] 
struct MyColor {...}

Pokud typ vlastnosti není typ převaděč nebo editor typ uživatelského rozhraní s ním spojené nebo chcete přepsat výchozí typ převaděč nebo editoru typu UI přidružený typ vlastnosti, můžete použít atribut vlastnosti samotného.Chcete-li přidružit typ převaděč vlastnost, použije TypeConverterAttribute vlastnost prohlášení, jak je znázorněno v následujícím příkladu kódu.

<TypeConverter(GetType(PointConverter))> _
Public Property MyLocation() As Point
   ...
End Property       
[ TypeConverter(typeof(PointConverter))]
        public Point MyLocation {...}  

Chcete-li přidružit typ editor UI vlastnost, použije EditorAttribute vlastnosti, jak je znázorněno v následujícím příkladu kódu.

<Editor(GetType(FlashTrackBarDarkenByEditor), _
GetType(UITypeEditor))>  _
Public Property DarkenBy() As Byte
   ...
End Property
[ Editor(typeof(FlashTrackBarDarkenByEditor), typeof(UITypeEditor))]
        public byte DarkenBy {...}

Návrhář může být přidružen typ, ale není vlastnost.Chcete-li přidružit typ návrháře, použije DesignerAttribute přímo nad deklaraci třídy, jak je znázorněno v následujícím příkladu kódu.

<Designer(GetType(HelpLabel.HelpLabelDesigner))> _
Public Class HelpLabel
   Inherits System.Windows.Forms.Control
   Implements System.ComponentModel.IExtenderProvider
   ...
End Class
    [Designer(typeof(HelpLabel.HelpLabelDesigner))]
    public class HelpLabel : System.Windows.Forms.Control, System.ComponentModel.IExtenderProvider {...}

[!POZNÁMKA]

V předchozích příkladech konstruktory pro TypeConverterAttribute,EditorAttribute, a DesignerAttribute třídy přijmout Type objekty jako své argumenty.Tento formulář konstruktor pro tyto atributy funguje, pokud je typ ve stejném sestavení jako třídy návrhu.Pokud jiné sestavení návrhu třídy, pak různé formuláře konstruktor atributů (nazývané sestavení kvalifikovaný formát) je potřeba, jak je znázorněno v následujícím příkladu kódu.

<Designer("System.Windows.Forms.Design.DocumentDesigner, System.Design")>  _
Public Class MyForm
   Inherits Form
   ...
End Class
[Designer("System.Windows.Forms.Design.DocumentDesigner, System.Design")]
public class MyForm : Form {...}

Atribut sestavení úroveň návrhu

PROSTŘEDÍ ASP.NET poskytuje atribut sestavení úroveň (TagPrefixAttribute), který umožňuje řízení vývojář zadat prefix visaček pro aplikace ASP.NET ovládací prvek.Prefix visaček, automaticky v aplikaci Visual Studio injekčně Register směrnice pro kontrolu, tak, aby ovládací prvek lze deklarativně na stránce s předponou předem nastavené značky (<tagprefix:názevovládacíhoprvku runat = server / > ).

[!POZNÁMKA]

TagPrefixAttribute Funguje pouze v Návrháři visual.Pokud autor ASP.NET stránky pomocí textového editoru, například programu Poznámkový blok, je nutné zadat prefix visaček a obor názvů sami v Register směrnice pro ovládací prvek.

Následující příklad kódu ukazuje, jak použít TagPrefixAttribute.První argument konstruktoru je atribut určuje obor názvů a druhý Určuje prefix visaček.

<assembly: TagPrefix("SimpleControls", "simple")>
Namespace SimpleControls
   <Designer("SimpleControl.Design.SimpleDesigner, SimpleControl")>  _
   Public Class SimpleControl
      Inherits System.Web.UI.WebControls.WebControl
      ...
   End Class 
End Namespace
[ assembly:TagPrefix("SimpleControls", "simple") ]
namespace SimpleControls {
    [
        Designer("SimpleControl.Design.SimpleDesigner, SimpleControl")
    ]
    public class SimpleControl : System.Web.UI.WebControls.WebControl {}
}

Viz také

Úkoly

Postupy: Implementace konvertoru typů

Postupy: Implementace editoru typů uživatelského rozhraní

Postupy: Použití atributů v ovládacích prvcích Windows Forms

Koncepty

Atributy v ovládacích prvcích Windows Forms

Atributy doby návrhu pro komponenty

Další zdroje

Rozšíření podpory během návrhu

Vlastní návrháři