Freigeben über


DesignerSerializationVisibilityAttribute-Klasse

Gibt den Typ der Dauerhaftigkeit an, der bei der Serialisierung einer Eigenschaft für eine Komponente zur Entwurfszeit verwendet werden soll.

Namespace: System.ComponentModel
Assembly: System (in system.dll)

Syntax

'Declaration
<AttributeUsageAttribute(AttributeTargets.Method Or AttributeTargets.Property Or AttributeTargets.Field Or AttributeTargets.Event)> _
Public NotInheritable Class DesignerSerializationVisibilityAttribute
    Inherits Attribute
'Usage
Dim instance As DesignerSerializationVisibilityAttribute
[AttributeUsageAttribute(AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Event)] 
public sealed class DesignerSerializationVisibilityAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method|AttributeTargets::Property|AttributeTargets::Field|AttributeTargets::Event)] 
public ref class DesignerSerializationVisibilityAttribute sealed : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Event) */ 
public final class DesignerSerializationVisibilityAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Event) 
public final class DesignerSerializationVisibilityAttribute extends Attribute

Hinweise

Wenn der dauerhafte Zustand eines Entwurfsmodusdokuments in einem Serialisierungsprogramm beibehalten wird, wird der Initialisierungsmethode von Komponenten häufig Code hinzugefügt, um zur Entwurfszeit festgelegte Werte von Eigenschaften beizubehalten. Dies ist das Standardverfahren für die meisten Basistypen, wenn kein Attribut zur Vorgabe eines anderen Verhaltens festgelegt wurde.

Mit dem DesignerSerializationVisibilityAttribute können Sie angeben, ob der Wert einer Eigenschaft Visible ist und im Initialisierungscode beibehalten wird, oder ob er Hidden ist und nicht im Initialisierungscode beibehalten wird, oder ob er aus Content besteht, wobei Initialisierungscode für jede öffentliche, nicht ausgeblendete Eigenschaft des Objekts generiert wird, das der Eigenschaft zugeordnet ist.

Member ohne DesignerSerializationVisibilityAttribute werden wie Member mit einem DesignerSerializationVisibilityAttribute mit dem Wert Visible behandelt. Falls möglich, werden die Werte einer als Visible markierten Eigenschaft durch ein Serialisierungsprogramm für den Typ serialisiert. Verwenden Sie DesignerSerializerAttribute, um eine benutzerdefinierte Serialisierung für einen bestimmten Typ oder eine bestimmte Eigenschaft anzugeben.

Weitere Informationen finden Sie unter Übersicht über Attribute und Erweitern von Metadaten mithilfe von Attributen.

Beispiel

Das folgende Codebeispiel veranschaulicht die Verwendung eines DesignerSerializationVisibilityAttribute, das auf Content festgelegt wurde. Es behält die Werte einer öffentlichen Eigenschaft eines Benutzersteuerelements bei, das zur Entwurfszeit konfiguriert werden kann. Um das Beispiel zu verwenden, kompilieren Sie zunächst folgenden Code in die Bibliothek eines Benutzersteuerelements. Fügen Sie anschließend einen Verweis auf die kompilierte DLL-Datei in einem neuen Windows-Anwendungsprojekt hinzu. Wenn Sie Visual Studio verwenden, wird der Toolbox automatisch ContentSerializationExampleControl hinzugefügt.

Ziehen Sie das Steuerelement aus der Toolbox in ein Formular, und legen Sie die Eigenschaften des DimensionData-Objekts fest, das im Eigenschaftenfenster aufgelistet ist. Wenn Sie den Code für das Formular anzeigen, ist der InitializeComponent-Methode des übergeordneten Formulars bereits Code hinzugefügt. Dieser Code legt für die Werte der Eigenschaften des Steuerelements die Werte fest, die Sie im Entwurfsmodus festgelegt haben.

Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Windows.Forms

Namespace DesignerSerializationVisibilityTest
    _
    ' The code for this user control declares a public property of type DimensionData with a DesignerSerializationVisibility 
    ' attribute set to DesignerSerializationVisibility.Content, indicating that the properties of the object should be serialized.

    ' The public, not hidden properties of the object that are set at design time will be persisted in the initialization code
    ' for the class object. Content persistence will not work for structs without a custom TypeConverter.       
    Public Class ContentSerializationExampleControl
        Inherits System.Windows.Forms.UserControl
        Private components As System.ComponentModel.Container = Nothing


        <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
        Public ReadOnly Property Dimensions() As DimensionData
            Get
                Return New DimensionData(Me)
            End Get
        End Property


        Public Sub New()
            InitializeComponent()
        End Sub 'New


        Protected Overloads Sub Dispose(ByVal disposing As Boolean)
            If disposing Then
                If Not (components Is Nothing) Then
                    components.Dispose()
                End If
            End If
            MyBase.Dispose(disposing)
        End Sub 'Dispose


        Private Sub InitializeComponent()
        End Sub 'InitializeComponent
    End Class 'ContentSerializationExampleControl

    ' This attribute indicates that the public properties of this object should be listed in the property grid.
   <TypeConverterAttribute(GetType(System.ComponentModel.ExpandableObjectConverter))> _   
    Public Class DimensionData
        Private owner As Control

        ' This class reads and writes the Location and Size properties from the Control which it is initialized to.
        Friend Sub New(ByVal owner As Control)
            Me.owner = owner
        End Sub 'New


        Public Property Location() As Point
            Get
                Return owner.Location
            End Get
            Set(ByVal Value As Point)
                owner.Location = Value
            End Set
        End Property


        Public Property FormSize() As Size
            Get
                Return owner.Size
            End Get
            Set(ByVal Value As Size)
                owner.Size = Value
            End Set
        End Property
    End Class 'DimensionData
End Namespace 'DesignerSerializationVisibilityTest
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Windows.Forms;

namespace DesignerSerializationVisibilityTest
{
    // The code for this user control declares a public property of type DimensionData with a DesignerSerializationVisibility 
    // attribute set to DesignerSerializationVisibility.Content, indicating that the properties of the object should be serialized.

    // The public, not hidden properties of the object that are set at design time will be persisted in the initialization code
    // for the class object. Content persistence will not work for structs without a custom TypeConverter.      

    public class ContentSerializationExampleControl : System.Windows.Forms.UserControl
    {
    private System.ComponentModel.Container components = null;              
    
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public DimensionData Dimensions
    {
        get 
        {
        return new DimensionData(this);
        }       
    }

    public ContentSerializationExampleControl()
    {
            InitializeComponent();      
    }
        
    protected override void Dispose( bool disposing )
    {
        if( disposing )
        {
        if( components != null )
            components.Dispose();
        }
        base.Dispose( disposing );
    }

    private void InitializeComponent()
    {
        components = new System.ComponentModel.Container();
    }
    }

    [TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]
    // This attribute indicates that the public properties of this object should be listed in the property grid.
    public class DimensionData
    {       
    private Control owner;

    // This class reads and writes the Location and Size properties from the Control which it is initialized to.
    internal DimensionData(Control owner)
    {
            this.owner = owner;         
    }

    public Point Location
    {
        get
        {
        return owner.Location;
        }
        set
        {
        owner.Location = value;
        }
    }

    public Size FormSize
    {
        get
            {
        return owner.Size;
        }
        set
        {
        owner.Size = value;
        }
    }
    }
}
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
#using <System.dll>

using namespace System;
using namespace System::Collections;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Drawing;
using namespace System::Windows::Forms;

// This attribute indicates that the public properties of this object should be listed in the property grid.

[TypeConverterAttribute(System::ComponentModel::ExpandableObjectConverter::typeid)]
public ref class DimensionData
{
private:
   Control^ owner;

internal:

   // This class reads and writes the Location and Size properties from the Control which it is initialized to.
   DimensionData( Control^ owner )
   {
      this->owner = owner;
   }

public:

   property Point Location 
   {
      Point get()
      {
         return owner->Location;
      }

      void set( Point value )
      {
         owner->Location = value;
      }

   }

   property Size FormSize 
   {
      Size get()
      {
         return owner->Size;
      }

      void set( Size value )
      {
         owner->Size = value;
      }
   }
};

// The code for this user control declares a public property of type DimensionData with a DesignerSerializationVisibility 
// attribute set to DesignerSerializationVisibility.Content, indicating that the properties of the object should be serialized.
// The public, not hidden properties of the object that are set at design time will be persisted in the initialization code
// for the class object. Content persistence will not work for structs without a custom TypeConverter.  
public ref class ContentSerializationExampleControl: public System::Windows::Forms::UserControl
{
private:
   System::ComponentModel::Container^ components;

public:

   property DimensionData^ Dimensions 
   {
      [DesignerSerializationVisibility(DesignerSerializationVisibility::Content)]
      DimensionData^ get()
      {
         return gcnew DimensionData( this );
      }
   }
   ContentSerializationExampleControl()
   {
      InitializeComponent();
   }

public:
   ~ContentSerializationExampleControl()
   {
      if ( components != nullptr )
      {
         delete components;
      }
   }

private:
   void InitializeComponent()
   {
      components = gcnew System::ComponentModel::Container;
   }
};
package DesignerSerializationVisibilityTest;

import System.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.ComponentModel.Design.*;
import System.Drawing.*;
import System.Windows.Forms.*;

// The code for this user control declares a public property of type 
// DimensionData with a DesignerSerializationVisibility attribute set 
// to DesignerSerializationVisibility.Content, indicating that the properties 
// of the object should be serialized.
// The public, not hidden properties of the object that are set at design 
// time will be persisted in the initialization code for the class object. 
// Content persistence will not work for structs without a custom 
// TypeConverter.        

public class ContentSerializationExampleControl
   extends System.Windows.Forms.UserControl
{
    private System.ComponentModel.Container components = null;

    /** @attribute DesignerSerializationVisibility(
         DesignerSerializationVisibility.Content)
     */
    /** @property 
     */
    public DimensionData get_Dimensions()
    {
        return new DimensionData(this);
    } //get_Dimensions

    public ContentSerializationExampleControl()
    {
        InitializeComponent();
    } //ContentSerializationExampleControl

    protected void Dispose(boolean disposing)
    {
        if (disposing) {
            if (components != null) {
                components.Dispose();
            }
        }
        super.Dispose(disposing);
    } //Dispose

    private void InitializeComponent()
    {
        components = new System.ComponentModel.Container();
    } //InitializeComponent
} //ContentSerializationExampleControl

/** @attribute TypeConverterAttribute(System.ComponentModel.
     ExpandableObjectConverter.class)
 */
public class DimensionData
{
    // This attribute indicates that the public properties of this 
    // object should be listed in the property grid.
    private Control owner;

    // This class reads and writes the Location and Size properties 
    // from the Control which it is initialized to.
    DimensionData(Control owner)
    {
        this.owner = owner;
    } //DimensionData

    /** @property 
     */
    public Point get_Location()
    {
        return owner.get_Location();
    } //get_Location

    /** @property 
     */
    public void set_Location(Point value)
    {
        owner.set_Location(value);
    } //set_Location

    /** @property 
     */
    public Size get_FormSize()
    {
        return owner.get_Size();
    } //get_FormSize

    /** @property 
     */
    public void set_FormSize(Size value)
    {
        owner.set_Size(value);
    } //set_FormSize
} //DimensionData

Vererbungshierarchie

System.Object
   System.Attribute
    System.ComponentModel.DesignerSerializationVisibilityAttribute

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

DesignerSerializationVisibilityAttribute-Member
System.ComponentModel-Namespace
Attribute
PropertyDescriptor
AttributeCollection-Klasse
PropertyDescriptorCollection

Weitere Ressourcen

Gewusst wie: Serialisieren von Auflistungen der Standardtypen mit dem DesignerSerializationVisibilityAttribute