DesignerAutoFormat Класс
Определение
Предоставляет абстрактный базовый класс для создания форматов, которые могут быть применены к настраиваемому элементу управления веб-сервера во время разработки.Provides the abstract base class for creating formats that can be applied to a custom Web server control at design time.
public ref class DesignerAutoFormat abstract
public abstract class DesignerAutoFormat
type DesignerAutoFormat = class
Public MustInherit Class DesignerAutoFormat
- Наследование
-
DesignerAutoFormat
Примеры
В следующем примере кода показано, как реализовать автоматическое форматирование в пользовательском конструкторе элементов управления.The following code example demonstrates how to implement automatic formatting in a custom control designer. Производный конструктор элементов управления реализует AutoFormats свойство, добавляя три экземпляра пользовательского автоматического формата, которые являются производными от DesignerAutoFormat класса.The derived control designer implements the AutoFormats property by adding three instances of a custom automatic format that are derived from the DesignerAutoFormat class.
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
Комментарии
DesignerAutoFormat предоставляет базовый класс, который может быть унаследован от и расширен для отображения форматированного пользовательского веб-элемента управления во время разработки в средстве визуального конструктора, например Visual Studio 2005Visual Studio 2005 .DesignerAutoFormat provides a base class that can be inherited from and extended to display a formatted custom Web server control at design time in a visual designer tool such as Visual Studio 2005Visual Studio 2005.
Разработчик элемента управления обеспечивает автоматическое форматирование, чтобы помочь разработчикам, использующим элемент управления, выбирать предпочтительный экран.A control developer provides automatic formatting in order to help developers who use the control to select a preferred display. Пользовательский DesignerAutoFormat объект работает с пользовательским конструктором элементов управления, чтобы обеспечить автоматическое форматирование во время разработки для пользовательского элемента управления.A custom DesignerAutoFormat object works with a custom control designer to provide automatic formatting at design time for a custom control. Например, Calendar элемент управления предоставляет разнообразные форматы, которые разработчик может применять во время разработки.For example, the Calendar control provides a variety of formats that can be applied by a developer at design time.
Чтобы реализовать автоматическое форматирование для пользовательского элемента управления, сделайте следующее:To implement automatic formatting for a custom control:
Создайте пользовательский элемент управления.Create the custom control.
Создайте производный класс конструктора от ControlDesigner класса или другого класса конструктора, который подходит для вашего элемента управления, например TextControlDesigner .Derive a designer class from the ControlDesigner class or another designer class that is appropriate for your control, such as the TextControlDesigner.
Создайте класс формата, производный от DesignerAutoFormat класса, который форматирует пользовательский элемент управления путем переопределения Apply метода.Derive a format class from the DesignerAutoFormat class that formats your custom control by overriding the Apply method.
В классе конструктора заполните AutoFormats свойство, которое является DesignerAutoFormatCollection объектом, с одним экземпляром класса формата для каждого именованного формата, к которому может применяться конструктор.In your designer class, populate the AutoFormats property, which is a DesignerAutoFormatCollection object, with one instance of your format class for each named format that your designer can apply.
DesignerAutoFormatКласс предоставляет следующие члены для поддержки автоматического форматирования во время разработки:The DesignerAutoFormat class provides the following members to support automatic formatting at design time:
ApplyМетод, который применяет именованный формат к указанному элементу управления.The Apply method, which applies the named format to the specified control.
GetPreviewControlМетод, который предоставляет копию элемента управления для предварительного просмотра в диалоговом окне Автоформат визуального конструктора, такого как Visual Studio 2005Visual Studio 2005 .The GetPreviewControl method, which provides a copy of the control for previewing in an AutoFormat dialog box of a visual designer such as Visual Studio 2005Visual Studio 2005.
NameСвойство, которое предоставляет текст, отображаемый в списке форматов в визуальном конструкторе.The Name property, which provides the text to display in a list of formats in a visual designer.
Примечания для тех, кто реализует этот метод
При наследовании от DesignerAutoFormat класса необходимо переопределить Apply(Control) метод для предварительного просмотра форматированного элемента управления и применить выбранный формат к элементу управления.When you inherit from the DesignerAutoFormat class, you must override the Apply(Control) method to preview a formatted control and to apply the selected format to your control.
Конструкторы
DesignerAutoFormat(String) |
Инициализирует новый экземпляр класса DesignerAutoFormat.Initializes a new instance of the DesignerAutoFormat class. |
Свойства
Name |
Возвращает имя объекта DesignerAutoFormat.Gets the name of a DesignerAutoFormat object. |
Style |
Получает объект DesignerAutoFormatStyle, используемый объектом DesignerAutoFormat для визуализации предварительного просмотра связанного элемента управления во время разработки.Gets a DesignerAutoFormatStyle object that is used by the DesignerAutoFormat object to render a design-time preview of the associated control. |
Методы
Apply(Control) |
Применяет связанное форматирование к заданным элементам управления.Applies the associated formatting to the specified control. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию.Serves as the default hash function. (Унаследовано от Object) |
GetPreviewControl(Control) |
Возвращает копию связанного элемента управления, чтобы предоставить возможность просмотра перед применением формата к элементу управления.Returns a copy of the associated control in order to provide a preview before applying the format to the control. |
GetType() |
Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object. (Унаследовано от Object) |
ToString() |
Возвращает строку, представляющую текущий объект DesignerAutoFormat.Returns a string that represents the current DesignerAutoFormat object. |