Öznitelikler ve Tasarım Zamanı Desteği

Tasarım zamanı desteği uzantıları genelde bir bileşeni kodundan ayrı olarak var olan kodda uygulanır.Öznitelikler çeşitli tasarım zamanı desteği sağlayıcıları türü veya bir türü bağımsız bir üye ile ilişkilendirmek için kullanılır.

Tasarım zamanı desteği ilişkilendirme için öznitelikleri

A DesignerAttribute bir tasarımcı türü ile ilişkilendirir.A TypeConverterAttribute türü dönüştürücü türü veya üye türü ile ilişkilendirir.Bir EditorAttribute UI türü Düzenleyici türü veya üye türü ile ilişkilendirir.

Bileşen başlatma özelleştirmek için öznitelikleri

Bir bileşen tasarım zamanında uygulayarak yüklendiğinde ayarlanacak özellik için varsayılan değer belirtebilirsiniz bir DefaultValueAttribute için bir özellik.A DefaultValueAttribute bir değer geçersiz kılmaları tasarım zamanında bileşeni başlatma kodu tarafından ayarlayabilirsiniz, ancak bir tasarımcı tarafından ayarlanan bir değerini öznitelik geçersiz kılmaz.

Properties penceresinde davranışını özelleştirmek için öznitelikleri

Bir özellik veya olay içinde listelenmiş olmalıdır olup olmadığını gösteren bir özelliklerini uygulayarak pencereyi bir BrowsableAttribute ona.Ayrıca özellikler kümesini değiştirebilirsiniz ve olaylara maruz için özellikleri uygulayan bir designer'ı kullanarak tasarým anýnda pencere IDesignerFilter arabirimi.Kategori altında bir özellik veya olay listelenmesi, belirttiğiniz özelliklerini uygulayarak pencereyi bir CategoryAttribute özelliği veya olay.Bir özellik veya olayı için görüntülenecek bir açıklama belirtebilirsiniz özelliklerini uygulayarak pencereyi bir DescriptionAttribute özelliği veya olay.

Özellik yalnızca tasarım sırasında uygulayarak ayarlanıp ayarlanamadığını belirtir bir DesignOnlyAttribute özelliğine.Özellik salt okunur veya okuma/yazma tasarým anýnda uygulayarak olup olmadığını belirleyebilirsiniz bir ReadOnlyAttribute özelliğine.

Bir özellik adıyla parantez içinde listelenmiş olup olmadığını belirtmek özellikleri uygulayarak pencereyi bir ParenthesizePropertyNameAttribute özelliğinin değeri olan true.

Belirtebileceğiniz uygulayarak iç içe geçmiş özelliğinin değeri değiştiğinde harekete yuvalanmış özelliği veya alt özellikler uyarılması gereken bir NotifyParentPropertyAttribute bildirim yükseltmek iç içe özelliğine.

Bir bileşenin özelliklerini yenilenecek, hiçbir özellik yenilenecek veya Tasarımcı görünümü uygulayarak Painting oynatıp oynatamayacağınızı belirleyebilir bir RefreshPropertiesAttribute uygun olan RefreshProperties değeri bir özelliği veya olay.

Tasarım zamanı seri hale getirme davranışını özelleştirmek için öznitelikleri

Bir özellik değerlerini mi serileştirilmiş veya olup koleksiyonu özellik değerleri, uygulayarak sıralanmış belirleyebilirsiniz bir DesignerSerializationVisibilityAttribute uygun olan DesignerSerializationVisibility özelliğine numaralandırma değeri.Visual Studio bu görev için kapsamlı destek vardır.Walkthrough: Serializing Collections of Standard Types with the DesignerSerializationVisibilityAttribute

Uygulayarak, bir tür seri hale getirilebilir olduğunu belirtmek bir SerializableAttribute türü.Özel seri hale getirme uygulayarak sağlamak ISerializable arabirimi veya özel bir seri hale getirici sağlama.Seri hale getirme hakkında daha fazla bilgi için bkz: .NET Framework'te Serileştirme.

Yaygın olarak kullanılan tasarım zamanı öznitelikleri hakkında daha fazla bilgi için bkz: Bileşenler için Tasarım Zamanı Öznitelikleri.

Öznitelikler Uygulanıyor

Tasarım zamanı öznitelikleri, özellikleri, olayları, sınıflar ve hatta derlemeler için uygulanır.Aşağıdaki kod örneği, bir sınıf ve sonra Özellikler ve olaylar için uygulanan öznitelikleri gösterir.

' 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;
}

Kural gereği, öznitelik sınıflarını adlı ÖznitelikAdıözniteliği.System.ComponentModel Ad alanı birçok temel öznitelik sınıflarını içerir.

Tasarım zamanı öznitelikleri ve devralma

Tasarım zamanı öznitelikleri temel bileşenden bir bileşeni veya denetimi türetilmesi, temel sınıf tasarım zamanı işlevselliğini bileşeninizin devralır.Temel işlevleri amaçlarınız için yeterli değilse, öznitelikleri yeniden uygulamanız gerekmez.Ancak, aynı tür niteliklerini geçersiz kılma veya türetilmiş bileşen için ek öznitelikleri uygulanır.Aşağıdaki kod parçası kılan özel bir denetim gösterir Text özelliği miras Control geçersiz kılma olarak BrowsableAttribute taban sınıfta uygulanan özniteliği.

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

Uygulama türü dönüştürücü, özniteliği UI türü Düzenleyicisi ya da tasarımcı

Bir tasarım zamanı desteği sağlayıcı türü veya üye türü ile ilişkilendirmek için uygun öznitelik türü sınıf bildirimi ya da üye bildirimi üstündeki satırın uygulanır.Aşağıdaki kod örneği gösterildiği bir TypeConverterAttribute türü için uygulanır.

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

Bir özelliğin türünü türü dönüştürücü veya kendisiyle ilişkilendirilmiş kullanıcı Arabirimi tür Düzenleyici yoksa veya varsayılan türü dönüştürücü veya UI türü düzenleyen bir özellik türü ile ilişkilendirilmiş geçersiz kılmak isterseniz, özellik için bir öznitelik uygulayabilirsiniz.Türü dönüştürücü özelliği ile ilişkilendirmek için geçerli bir TypeConverterAttribute için aşağıdaki kod örneğinde gösterildiği gibi özellik bildirimi.

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

UI türü Düzenleyici özelliği ile ilişkilendirmek için geçerli bir EditorAttribute özelliğine, aşağıdaki kod örneğinde gösterildiği gibi.

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

Bir tasarımcı, bir tür, ancak bir özelliği ile ilişkilendirilebilir.Bir tasarımcı bir türü ile ilişkilendirmek için geçerli bir DesignerAttribute aşağıdaki kod örneğinde gösterildiği gibi doğrudan sınıf bildirimi, yukarıda.

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

[!NOT]

Yukarıdaki örneklerde, Kurucular için TypeConverterAttribute,EditorAttribute, ve DesignerAttribute sınıfları kabul Type nesneleri kendi bağımsız olarak.Tür montaj tasarım sınıfları ise bu formu bu özniteliklerin yapıcısının çalışır.Tasarım zamanı sınıfları farklı bir derlemede, daha sonra öznitelik Oluşturucu (derleme nitelikli biçimi olarak da adlandırılır) farklı bir form, aşağıdaki kod örneğinde gösterildiği gibi gereklidir.

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

Montaj düzeyi tasarım zamanı özniteliği

ASP.net bir montaj düzeyi öznitelik sağlar (TagPrefixAttribute) bir asp bir etiket öneki belirtmek denetim geliştiricisi sağlar.net denetim.Etiket öneki otomatik olarak Visual Studio tarafından birbirlerinden Register denetim hazırlanmasına sayfasında belirlenmiş etiket öneki ile kullanılan böylece yönergesi denetimin (<tagprefix:controlname runat = server / > ).

[!NOT]

TagPrefixAttribute Yalnızca görsel tasarımcılar içinde çalışır.asp yazarsanız.net sayfaları, Not Defteri gibi bir metin düzenleyicisi kullanarak etiket öneki ve ad alanı kendiniz belirleyeceğiniz gerek Register Control yönergesi.

Aşağıdaki kod örneği nasıl uygulanacağını gösterir TagPrefixAttribute.İlk bağımsız değişken özniteliğin kurucusuna ad ve ikinci etiket öneki belirtir.

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

Ayrıca bkz.

Görevler

Nasıl yapılır: Tür Dönüştürücü Uygulama

Nasıl yapılır: UI Tür Tanımlayıcısını Uygulama

Nasıl yapılır: Windows Forms Denetiminde Öznitelikleri Uygulama

Kavramlar

Windows Forms Denetimlerindeki Öznitelikler

Bileşenler için Tasarım Zamanı Öznitelikleri

Diğer Kaynaklar

Tasarım Zamanı Desteği Sunma

Özel Tasarımcılar