ControlDesigner-Klasse
Stellt eine Basisklasse für Steuerelement-Designer zum Erweitern des Verhaltens eines Webserversteuerelements im Entwurfsmodus bereit.
Namespace: System.Web.UI.Design
Assembly: System.Design (in system.design.dll)
Syntax
'Declaration
Public Class ControlDesigner
Inherits HtmlControlDesigner
'Usage
Dim instance As ControlDesigner
public class ControlDesigner : HtmlControlDesigner
public ref class ControlDesigner : public HtmlControlDesigner
public class ControlDesigner extends HtmlControlDesigner
public class ControlDesigner extends HtmlControlDesigner
Hinweise
Die ControlDesigner-Klasse stellt eine Basisklasse für Steuerelement-Designer bereit, von der geerbt werden kann und die erweitert werden kann, um zur Entwurfszeit Unterstützung für ein Webserversteuerelement in einem Entwurfshost wie Visual Studio 2005 bereitzustellen.
Das Objektmodell für das Arbeiten mit Entwurfszeitrendering ist gegenüber früheren Versionen verbessert worden. Dabei ermöglichen die folgenden neuen Basisklassen Zugriff auf das vereinfachte Objektmodell:
ControlDesigner: Diese Klasse ist nicht neu, wurde aber erheblich verbessert.
Automatische Formatierung
Sie können verschiedene automatische und vordefinierte Formate erstellen, die die Arbeit von Seitenentwicklern vereinfachen können, die benutzerdefinierten Webserversteuerelementen komplexe Formatänderungen zuweisen. So bietet z. B. das TableDesigner-Steuerelement, das von der ControlDesigner-Klasse abgeleitet ist, viele automatische Formate. Wenn Sie automatische Formatierungen in benutzerdefinierten Steuerelementen implementieren und bereitstellen möchten, verwenden Sie folgende Features:
Die AutoFormats-Eigenschaft.
Die OnAutoFormatApplied-Methode.
Die DesignerAutoFormat-Klasse.
Die DesignerAutoFormatStyle-Klasse.
Aktionslisten (Smarttags)
Aktionslisten sind Menüs mit wichtigen oder häufig verwendeten Aufgaben, die ein Seitenentwickler, der ein bestimmtes Steuerelement verwendet, in einer Entwurfszeit-Benutzeroberfläche wie Visual Studio 2005 ausführen kann. So könnte z. B. in der Entwurfszeitansicht eines Steuerelements ein Menü mit verfügbaren Aufgaben bereitgestellt werden. Dazu könnte auch die Aufgabe zählen, das Steuerelement automatisch zu formatieren. Weitere Informationen zu Aktionslisten finden Sie unter den folgenden Features:
Die ActionLists-Eigenschaft.
Die DesignerActionList-Klasse.
Die GetSortedActionItems-Methode.
Die DesignerActionListCollection-Klasse.
Die DesignerActionMethodItem-Klasse.
Die DesignerActionPropertyItem-Klasse.
Steuerelement-Designer-Bereiche
Designerbereiche sind bearbeitbare Bereiche in der Entwurfszeitansicht eines Webserversteuerelements. Dieses Feature ermöglicht zur Entwurfszeit eine WYSIWYG-ähnliche Bearbeitung von Vorlageninhalten, inneren Steuerelementen und Eigenschaften. Sie können mithilfe des Steuerelement-Designers Steuerelemente in Bereichen erstellen oder die Toolbox verwenden, um Steuerelemente per Drag & Drop in Bereichen abzulegen. Für das Verwalten von Bereichen werden folgende Features verwendet:
Die OnClick-Methode.
Die DesignerRegion-Klasse.
Die EditableDesignerRegion-Klasse.
Die GetEditableDesignerRegionContent-Methode.
Die SetEditableDesignerRegionContent-Methode.
Vorlagen
Das Modell für das Erstellen einer Benutzeroberfläche für die Bearbeitung von aus einer Vorlage gebildeten Steuerelementen zur Entwurfszeit, beispielsweise eines GridView-Steuerelements, wurde im Vergleich zu früheren Versionen erheblich verbessert. Sie können komplexe benutzerdefinierte Steuerelemente erstellen, die Vorlagen für verschiedene Teile des Steuerelements enthalten. Solche benutzerdefinierten Steuerelement-Designer können Seitenentwickler unterstützen, die Vorlagen mit folgenden Features bearbeiten:
Die TemplateGroups-Eigenschaft.
Die InTemplateMode-Eigenschaft.
Die TemplateGroup-Klasse.
Entwurfszeitrendering
Die ControlDesigner-Klasse verfügt über die folgenden Methoden, die ein Entwurfszeitrendering des Webserversteuerelements unterstützen. Die meisten dieser Methoden sind gegenüber früheren Versionen gleich geblieben:
Die GetDesignTimeHtml-Methode.
Die GetEmptyDesignTimeHtml-Methode.
Die GetErrorDesignTimeHtml-Methode.
Die UpdateDesignTimeHtml-Methode.
Die CreatePlaceHolderDesignTimeHtml-Methode.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie eine von der ControlDesigner-Klasse abgeleitete einfache Designer-Klasse erstellt wird. Dieser Steuerelement-Designer unterstützt eine benutzerdefinierte TextControl
-Klasse und stellt einen Befehl für das Ändern der Textgröße eines Steuerelements zur Entwurfszeit bereit. Zum Zuordnen des Steuerelements zum Steuerelement-Designer wird dieser in der TextControl
-Klasse in einer DesignerAttribute-Objektdeklaration angegeben. Die Funktion für das Beibehalten von Eigenschaftenänderungen aus dem Designer im HTML-Markup finden Sie in der ToggleTextSize
-Methode der benutzerdefinierten ActionList
-Klasse.
Fügen Sie zum Ausführen des Beispiels einen Verweis auf die Assembly System.Design.dll hinzu, und kompilieren Sie den Code.
Imports Microsoft.VisualBasic
Imports System.Web.UI
Imports System.Web.UI.Design
Imports System.Web.UI.WebControls
Imports System.ComponentModel
Imports System.ComponentModel.Design
Namespace ASPNet.Design.Samples.VB
' Simple text Web control renders a text string.
' This control is associated with the TextSizeWebControlDesigner.
<DesignerAttribute(GetType(TextSizeWebControlDesigner)), _
ToolboxData("<{0}:TextControl runat='server'></{0}:TextControl>")> _
Public Class TextControl
Inherits Label
Private _largeText As Boolean = True
' Constructor
Public Sub New()
Text = "Test Phrase"
SetSize()
End Sub
' Determines whether the text is large or small
<Bindable(True), Category("Appearance"), DefaultValue(True)> _
Public Property LargeText() As Boolean
Get
Return _largeText
End Get
Set(ByVal value As Boolean)
_largeText = value
SetSize()
End Set
End Property
' Applies the LargeText property to the control
Private Sub SetSize()
If LargeText Then
Me.Font.Size = FontUnit.XLarge
Else
Me.Font.Size = FontUnit.Small
End If
End Sub
End Class
' This control designer offers DesignerActionList commands
' that can alter the design time html of the associated control.
Public Class TextSizeWebControlDesigner
Inherits ControlDesigner
Private _actionLists As DesignerActionListCollection
' Do not allow direct resizing of the control
Public Overrides ReadOnly Property AllowResize() As Boolean
Get
Return False
End Get
End Property
' Return a custom ActionList collection
Public Overrides ReadOnly Property ActionLists() As System.ComponentModel.Design.DesignerActionListCollection
Get
If IsNothing(_actionLists) Then
_actionLists = New DesignerActionListCollection()
_actionLists.AddRange(MyBase.ActionLists)
' Add a custom DesignerActionList
_actionLists.Add(New ActionList(Me))
End If
Return _actionLists
End Get
End Property
' Create a custom class of DesignerActionList
Public Class ActionList
Inherits DesignerActionList
Private _parent As TextSizeWebControlDesigner
Private _items As DesignerActionItemCollection
' Constructor
Public Sub New(ByRef parent As TextSizeWebControlDesigner)
MyBase.New(parent.Component)
_parent = parent
End Sub
' Create the ActionItem collection and add one command
Public Overrides Function GetSortedActionItems() As DesignerActionItemCollection
If IsNothing(_items) Then
_items = New DesignerActionItemCollection()
_items.Add(New DesignerActionMethodItem(Me, "ToggleLargeText", "Toggle Text Size", True))
End If
Return _items
End Function
' ActionList command to change the text size
Private Sub ToggleLargeText()
' Get a reference to the parent designer's associated control
Dim ctl As TextControl = CType(_parent.Component, TextControl)
' Get a reference to the control's LargeText property
Dim propDesc As PropertyDescriptor = TypeDescriptor.GetProperties(ctl)("LargeText")
' Get the current value of the property
Dim v As Boolean = CType(propDesc.GetValue(ctl), Boolean)
' Toggle the property value
propDesc.SetValue(ctl, (Not v))
End Sub
End Class
End Class
End Namespace
...
<%@ Page Language="VB" %>
<%@ Register TagPrefix="aspSample"
Namespace="ASPNet.Design.Samples.VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<aspSample:TextControl ID=TextControl1 runat="server">
</aspSample:TextControl>
</div>
</form>
</body>
</html>
using System;
using System.Web.UI;
using System.Drawing;
using System.Web.UI.Design;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.ComponentModel.Design;
namespace ASPNet.Design.Samples.CS
{
// Simple text Web control renders a text string.
// This control is associated with the TextSizeWebControlDesigner.
[DesignerAttribute(typeof(TextSizeWebControlDesigner)),
ToolboxData("<{0}:TextControl runat=\"server\"></{0}:TextControl>")]
public class TextControl : Label
{
private bool _largeText = true;
// Constructor
public TextControl()
{
Text = "Test Phrase";
SetSize();
}
// Determines whether the text is large or small
[Bindable(true), Category("Appearance"), DefaultValue("true")]
public bool LargeText
{
get { return _largeText; }
set
{
_largeText = value;
SetSize();
}
}
// Applies the LargeText property to the control
private void SetSize()
{
if (LargeText)
this.Font.Size = FontUnit.XLarge;
else
this.Font.Size = FontUnit.Small;
}
}
// This control designer offers DesignerActionList commands
// that can alter the design time html of the associated control.
public class TextSizeWebControlDesigner : ControlDesigner
{
private DesignerActionListCollection _actionLists = null;
// Do not allow direct resizing of the control
public override bool AllowResize
{
get { return false; }
}
// Return a custom ActionList collection
public override DesignerActionListCollection ActionLists
{
get
{
if (_actionLists == null)
{
_actionLists = new DesignerActionListCollection();
_actionLists.AddRange(base.ActionLists);
// Add a custom DesignerActionList
_actionLists.Add(new ActionList(this));
}
return _actionLists;
}
}
public class ActionList : DesignerActionList
{
private TextSizeWebControlDesigner _parent;
private DesignerActionItemCollection _items;
// Constructor
public ActionList(TextSizeWebControlDesigner parent)
: base(parent.Component)
{
_parent = parent;
}
// Create the ActionItem collection and add one command
public override DesignerActionItemCollection GetSortedActionItems()
{
if (_items == null)
{
_items = new DesignerActionItemCollection();
_items.Add(new DesignerActionMethodItem(this, "ToggleLargeText", "Toggle Text Size", true));
}
return _items;
}
// ActionList command to change the text size
private void ToggleLargeText()
{
// Get a reference to the parent designer's associated control
TextControl ctl = (TextControl)_parent.Component;
// Get a reference to the control's LargeText property
PropertyDescriptor propDesc = TypeDescriptor.GetProperties(ctl)["LargeText"];
// Get the current value of the property
bool v = (bool)propDesc.GetValue(ctl);
// Toggle the property value
propDesc.SetValue(ctl, !v);
}
}
}
}
...
<%@ Page Language="C#" %>
<%@ Register TagPrefix="aspSample"
Namespace="ASPNet.Design.Samples.CS" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<aspSample:TextControl ID=TextControl1 runat="server">
</aspSample:TextControl>
</div>
</form>
</body>
</html>
.NET Framework-Sicherheit
- SecurityPermission für das Verwenden von nicht verwaltetem Code. Zugeordnete Enumeration: UnmanagedCode
Vererbungshierarchie
System.Object
System.ComponentModel.Design.ComponentDesigner
System.Web.UI.Design.HtmlControlDesigner
System.Web.UI.Design.ControlDesigner
Abgeleitete Klassen
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 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
ControlDesigner-Member
System.Web.UI.Design-Namespace
TemplateGroup
DesignerAutoFormat
DesignerActionList
DesignerRegion
ContainerControlDesigner-Klasse
CompositeControlDesigner
Weitere Ressourcen
Übersicht über ASP.NET-Steuerelement-Designer
Architektur der Entwurfszeit
Entwurfszeitunterstützung für Web Forms
Der Beispielsteuerelement-Designer für Aktionslisten und Dienste