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