DesignerAutoFormat Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt die abstrakte Basisklasse für das Erstellen von Formaten bereit, die zur Entwurfszeit auf ein benutzerdefiniertes Webserversteuerelement angewendet werden können.
public ref class DesignerAutoFormat abstract
public abstract class DesignerAutoFormat
type DesignerAutoFormat = class
Public MustInherit Class DesignerAutoFormat
- Vererbung
-
DesignerAutoFormat
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die automatische Formatierung in einem benutzerdefinierten Steuerelement-Designer implementiert wird. Der Designer für abgeleitete Steuerelemente implementiert die AutoFormats -Eigenschaft, indem drei Instanzen eines benutzerdefinierten automatischen Formats hinzugefügt werden, die von der DesignerAutoFormat -Klasse abgeleitet werden.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.Design;
using System.Web.UI.Design.WebControls;
using System.Web.UI.WebControls;
namespace CustomControls.Design.CS
{
// A custom Label control whose contents can be indented
[Designer(typeof(IndentLabelDesigner)),
ToolboxData("<{0}:IndentLabel Runat=\"server\"></{0}:IndentLabel>")]
public class IndentLabel : Label
{
private int _indent = 0;
// Property to indent all text within the label
[Category("Appearance"), DefaultValue(0),
PersistenceMode(PersistenceMode.Attribute)]
public int Indent
{
get { return _indent; }
set
{
_indent = value;
// Get the number of pixels to indent
int ind = value * 8;
// Add the indent style to the control
if (ind > 0)
this.Style.Add(HtmlTextWriterStyle.MarginLeft, ind.ToString() + "px");
else
this.Style.Remove(HtmlTextWriterStyle.MarginLeft);
}
}
}
// A design-time ControlDesigner for the IndentLabel control
[SupportsPreviewControl(true)]
public class IndentLabelDesigner : LabelDesigner
{
private DesignerAutoFormatCollection _autoFormats = null;
// The collection of AutoFormat objects for the IndentLabel object
public override DesignerAutoFormatCollection AutoFormats
{
get
{
if (_autoFormats == null)
{
// Create the collection
_autoFormats = new DesignerAutoFormatCollection();
// Create and add each AutoFormat object
_autoFormats.Add(new IndentLabelAutoFormat("MyClassic"));
_autoFormats.Add(new IndentLabelAutoFormat("MyBright"));
_autoFormats.Add(new IndentLabelAutoFormat("Default"));
}
return _autoFormats;
}
}
// An AutoFormat object for the IndentLabel control
private class IndentLabelAutoFormat : DesignerAutoFormat
{
public IndentLabelAutoFormat(string name) : base(name)
{ }
// Applies styles based on the Name of the AutoFormat
public override void Apply(Control inLabel)
{
if (inLabel is IndentLabel)
{
IndentLabel ctl = (IndentLabel)inLabel;
// Apply formatting according to the Name
if (this.Name == "MyClassic")
{
// For MyClassic, apply style elements directly to the control
ctl.ForeColor = Color.Gray;
ctl.BackColor = Color.LightGray;
ctl.Font.Size = FontUnit.XSmall;
ctl.Font.Name = "Verdana,Geneva,Sans-Serif";
}
else if (this.Name == "MyBright")
{
// For MyBright, apply style elements to the Style property
this.Style.ForeColor = Color.Maroon;
this.Style.BackColor = Color.Yellow;
this.Style.Font.Size = FontUnit.Medium;
// Merge the AutoFormat style with the control's style
ctl.MergeStyle(this.Style);
}
else
{
// For the Default format, apply style elements to the control
ctl.ForeColor = Color.Black;
ctl.BackColor = Color.Empty;
ctl.Font.Size = FontUnit.XSmall;
}
}
}
}
}
}
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.Design
Imports System.Web.UI.Design.WebControls
Imports System.Web.UI.WebControls
Namespace CustomControls.Design
' A custom Label control whose contents can be indented
<Designer(GetType(IndentLabelDesigner)), _
ToolboxData("<{0}:IndentLabel Runat=""server""></{0}:IndentLabel>")> _
Public Class IndentLabel
Inherits System.Web.UI.WebControls.Label
Dim _indent As Integer = 0
<Category("Appearance"), DefaultValue(0), _
PersistenceMode(PersistenceMode.Attribute)> _
Property Indent() As Integer
Get
Return _indent
End Get
Set(ByVal Value As Integer)
_indent = Value
' Get the number of pixels to indent
Dim ind As Integer = _indent * 8
' Add the indent style to the control
If ind > 0 Then
Me.Style.Add(HtmlTextWriterStyle.MarginLeft, ind.ToString() & "px")
Else
Me.Style.Remove(HtmlTextWriterStyle.MarginLeft)
End If
End Set
End Property
End Class
' A design-time ControlDesigner for the IndentLabel control
Public Class IndentLabelDesigner
Inherits LabelDesigner
Private _autoFormats As DesignerAutoFormatCollection = Nothing
' The collection of AutoFormat objects for the IndentLabel object
Public Overrides ReadOnly Property AutoFormats() As DesignerAutoFormatCollection
Get
If _autoFormats Is Nothing Then
' Create the collection
_autoFormats = New DesignerAutoFormatCollection()
' Create and add each AutoFormat object
_autoFormats.Add(New IndentLabelAutoFormat("MyClassic"))
_autoFormats.Add(New IndentLabelAutoFormat("MyBright"))
_autoFormats.Add(New IndentLabelAutoFormat("Default"))
End If
Return _autoFormats
End Get
End Property
' An AutoFormat object for the IndentLabel control
Public Class IndentLabelAutoFormat
Inherits DesignerAutoFormat
Public Sub New(ByVal name As String)
MyBase.New(name)
End Sub
' Applies styles based on the Name of the AutoFormat
Public Overrides Sub Apply(ByVal inLabel As Control)
If TypeOf inLabel Is IndentLabel Then
Dim ctl As IndentLabel = CType(inLabel, IndentLabel)
' Apply formatting according to the Name
If Me.Name.Equals("MyClassic") Then
' For MyClassic, apply style elements directly to the control
ctl.ForeColor = Color.Gray
ctl.BackColor = Color.LightGray
ctl.Font.Size = FontUnit.XSmall
ctl.Font.Name = "Verdana,Geneva,Sans-Serif"
ElseIf Me.Name.Equals("MyBright") Then
' For MyBright, apply style elements to the Style object
Me.Style.ForeColor = Color.Maroon
Me.Style.BackColor = Color.Yellow
Me.Style.Font.Size = FontUnit.Medium
' Merge the AutoFormat style with the control's style
ctl.MergeStyle(Me.Style)
Else
' For the Default format, apply style elements to the control
ctl.ForeColor = Color.Black
ctl.BackColor = Color.Empty
ctl.Font.Size = FontUnit.XSmall
End If
End If
End Sub
End Class
End Class
End Namespace
Hinweise
DesignerAutoFormat stellt eine Basisklasse bereit, die von geerbt und erweitert werden kann, um ein formatiertes benutzerdefiniertes Webserversteuerelement zur Entwurfszeit in einem visuellen Designertool wie Visual Studio 2005 anzuzeigen.
Ein Steuerelemententwickler stellt eine automatische Formatierung bereit, um Entwicklern, die das Steuerelement verwenden, bei der Auswahl einer bevorzugten Anzeige zu helfen. Ein benutzerdefiniertes DesignerAutoFormat Objekt arbeitet mit einem benutzerdefinierten Steuerelement-Designer zusammen, um zur Entwurfszeit eine automatische Formatierung für ein benutzerdefiniertes Steuerelement bereitzustellen. Beispielsweise stellt das Calendar -Steuerelement eine Vielzahl von Formaten bereit, die von einem Entwickler zur Entwurfszeit angewendet werden können.
So implementieren Sie die automatische Formatierung für ein benutzerdefiniertes Steuerelement:
Erstellen Sie das benutzerdefinierte Steuerelement.
Leiten Sie eine Designerklasse von der ControlDesigner -Klasse oder einer anderen Designerklasse ab, die für Ihr Steuerelement geeignet ist, z TextControlDesigner. B. .
Leiten Sie eine Formatklasse von der DesignerAutoFormat -Klasse ab, die Ihr benutzerdefiniertes Steuerelement formatiert, indem Sie die Apply -Methode überschreiben.
Füllen Sie in Der Designerklasse die -Eigenschaft, bei der AutoFormats es sich um ein DesignerAutoFormatCollection -Objekt handelt, mit einer Instanz Ihrer Formatklasse für jedes benannte Format, das vom Designer angewendet werden kann.
Die DesignerAutoFormat -Klasse stellt die folgenden Member zur Unterstützung der automatischen Formatierung zur Entwurfszeit bereit:
Die Apply -Methode, die das benannte Format auf das angegebene Steuerelement anwendet.
Die GetPreviewControl -Methode, die eine Kopie des Steuerelements für die Vorschau in einem AutoFormat-Dialogfeld eines visuellen Designers wie Visual Studio 2005 bereitstellt.
Die Name -Eigenschaft, die den Text bereitstellt, der in einer Liste von Formaten in einem visuellen Designer angezeigt werden soll.
Hinweise für Ausführende
Wenn Sie von der -Klasse erben DesignerAutoFormat , müssen Sie die Apply(Control) -Methode überschreiben, um eine Vorschau eines formatierten Steuerelements anzuzeigen und das ausgewählte Format auf das Steuerelement anzuwenden.
Konstruktoren
DesignerAutoFormat(String) |
Initialisiert eine neue Instanz der DesignerAutoFormat-Klasse. |
Eigenschaften
Name |
Ruft den Namen eines DesignerAutoFormat-Objekts ab. |
Style |
Ruft ein DesignerAutoFormatStyle-Objekt ab, das vom DesignerAutoFormat-Objekt für eine Entwurfszeitvorschau des zugeordneten Steuerelements verwendet wird. |
Methoden
Apply(Control) |
Wendet die zugeordnete Formatierung auf das angegebene Steuerelement an. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetPreviewControl(Control) |
Gibt eine Kopie des zugeordneten Steuerelements zurück, um vor dem Anwenden des Formats auf das Steuerelement eine Vorschau bereitzustellen. |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle DesignerAutoFormat-Objekt darstellt. |