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


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 и любой производный класс определяют свойство как AutoFormatsDesignerAutoFormatCollection объект . Разработчики элементов управления могут переопределить свойство в конструкторе 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.

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

Cast<TResult>(IEnumerable)

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

OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.

AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.

AsQueryable(IEnumerable)

Преобразовывает коллекцию IEnumerable в объект IQueryable.

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

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