Поделиться через


DesignerAutoFormatCollection Класс

Определение

Представляет коллекцию DesignerAutoFormat объектов в конструкторе элементов управления. Этот класс не может быть унаследован.

public ref class DesignerAutoFormatCollection sealed : System::Collections::IList
public sealed class DesignerAutoFormatCollection : System.Collections.IList
type DesignerAutoFormatCollection = class
    interface IList
    interface ICollection
    interface IEnumerable
Public NotInheritable Class DesignerAutoFormatCollection
Implements IList
Наследование
DesignerAutoFormatCollection
Реализации

Примеры

В следующем примере кода показано, как реализовать AutoFormats свойство в пользовательском конструкторе элементов управления. Производный конструктор элементов управления реализует AutoFormats свойство путем добавления трех экземпляров настраиваемого автоматического формата, производного от DesignerAutoFormat класса.

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

Комментарии

Класс ControlDesigner и любой производный класс определяют AutoFormats свойство как DesignerAutoFormatCollection объект. Разработчики управления могут переопределить AutoFormats свойство в производном конструкторе элементов управления, добавить настраиваемые стили автоматического форматирования и вернуть коллекцию поддерживаемых форматов в визуальный конструктор.

Коллекция динамически увеличивается по мере добавления объектов. Индексы в этой коллекции основаны на нулях. Count Используйте свойство, чтобы определить, сколько форматов автоматического стиля находятся в коллекции.

Кроме того, используйте DesignerAutoFormatCollection методы и свойства для предоставления следующих функций:

  • Метод Add для добавления одного формата в коллекцию.

  • Метод Insert добавления формата по определенному индексу в коллекции.

  • Метод Remove удаления формата.

  • Метод RemoveAt удаления формата по определенному индексу.

  • Метод Contains , определяющий, уже находится ли определенный формат в коллекции.

  • Метод IndexOf для получения индекса формата в коллекции.

  • Свойство Item[] для получения или задания формата по конкретному индексу с использованием нотации массива.

  • Метод Clear удаления всех форматов из коллекции.

  • Свойство Count , определяющее количество форматов в коллекции.

  • Метод IndexOf для получения позиции формата в коллекции.

Конструкторы

Имя Описание
DesignerAutoFormatCollection()

Инициализирует новый экземпляр класса DesignerAutoFormatCollection.

Свойства

Имя Описание
Count

Возвращает количество DesignerAutoFormat объектов в коллекции.

Item[Int32]

Возвращает или задает объект по указанному DesignerAutoFormat индексу в коллекции.

PreviewSize

Получает максимальное внешнее измерение элемента управления, как оно будет отображаться во время выполнения.

SyncRoot

Возвращает объект, который можно использовать для синхронизации доступа к объекту DesignerAutoFormatCollection .

Методы

Имя Описание
Add(DesignerAutoFormat)

Добавляет указанный DesignerAutoFormat объект в конец коллекции.

Clear()

Удаляет все форматы из коллекции.

Contains(DesignerAutoFormat)

Определяет, содержится ли указанный формат в коллекции.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IndexOf(DesignerAutoFormat)

Возвращает индекс указанного DesignerAutoFormat объекта в коллекции.

Insert(Int32, DesignerAutoFormat)

Вставляет DesignerAutoFormat объект в коллекцию по указанному индексу.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
Remove(DesignerAutoFormat)

Удаляет указанный DesignerAutoFormat объект из коллекции.

RemoveAt(Int32)

Удаляет объект по указанному DesignerAutoFormat индексу в коллекции.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
ICollection.CopyTo(Array, Int32)

Копирует элементы коллекции Array в объект, начиная с определенного Array индекса при DesignerAutoFormatCollection приведение объекта к интерфейсу ICollection .

ICollection.Count

Возвращает количество элементов, содержащихся в коллекции, при DesignerAutoFormatCollection приведение объекта к интерфейсу ICollection .

ICollection.IsSynchronized

Возвращает значение, указывающее, синхронизирован ли доступ к коллекции (потокобезопасный) при DesignerAutoFormatCollection приведение объекта к интерфейсу ICollection .

IEnumerable.GetEnumerator()

IEnumerator Возвращает интерфейс, который выполняет итерацию по коллекции при DesignerAutoFormatCollection приведение объекта к интерфейсуIEnumerable.

IList.Add(Object)

Добавляет элемент в коллекцию при DesignerAutoFormatCollection приведение объекта к интерфейсу IList .

IList.Contains(Object)

Определяет, содержит ли коллекция определенное значение при DesignerAutoFormatCollection приведение объекта к интерфейсу IList .

IList.IndexOf(Object)

Определяет индекс определенного элемента в коллекции при DesignerAutoFormatCollection приведение объекта к интерфейсу IList .

IList.Insert(Int32, Object)

Вставляет элемент в коллекцию по указанному индексу при DesignerAutoFormatCollection приведение объекта к интерфейсу IList .

IList.IsFixedSize

Возвращает значение, указывающее, имеет ли коллекция фиксированный размер при DesignerAutoFormatCollection приведение объекта к интерфейсу IList .

IList.IsReadOnly

Описание этого метода см. в разделе IsReadOnly.

IList.Item[Int32]

Возвращает элемент по указанному индексу, когда DesignerAutoFormatCollection объект приведение к интерфейсу IList .

IList.Remove(Object)

Удаляет первое вхождение определенного объекта из коллекции при DesignerAutoFormatCollection приведение объекта к интерфейсу IList .

IList.RemoveAt(Int32)

Удаляет элемент по указанному индексу при DesignerAutoFormatCollection приведение объекта к интерфейсу IList .

Методы расширения

Имя Описание
AsParallel(IEnumerable)

Включает параллелизацию запроса.

AsQueryable(IEnumerable)

Преобразует IEnumerable в IQueryable.

Cast<TResult>(IEnumerable)

Приведение элементов IEnumerable к указанному типу.

OfType<TResult>(IEnumerable)

Фильтрует элементы IEnumerable на основе указанного типа.

Применяется к

См. также раздел