DesignerAutoFormatCollection Classe

Definizione

Rappresenta una raccolta di oggetti DesignerAutoFormat all'interno di una finestra di progettazione controlli. La classe non può essere ereditata.

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
Ereditarietà
DesignerAutoFormatCollection
Implementazioni

Esempio

Nell'esempio di codice seguente viene illustrato come implementare la AutoFormats proprietà in una finestra di progettazione controlli personalizzata. Progettazione controlli derivati implementa la AutoFormats proprietà aggiungendo tre istanze di un formato automatico personalizzato derivato dalla DesignerAutoFormat classe .

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

Commenti

La ControlDesigner classe e qualsiasi classe derivata definisce la AutoFormats proprietà come DesignerAutoFormatCollection oggetto . Gli sviluppatori di controlli possono eseguire l'override della AutoFormats proprietà in una finestra di progettazione controlli derivata, aggiungere stili di formattazione automatica personalizzati e restituire la raccolta di formati supportati alla finestra di progettazione visiva.

La raccolta aumenta dinamicamente man mano che vengono aggiunti oggetti. Gli indici in questa raccolta sono in base zero. Utilizzare la Count proprietà per determinare il numero di formati di stile automatici presenti nell'insieme.

Inoltre, usare i DesignerAutoFormatCollection metodi e le proprietà per fornire le funzionalità seguenti:

  • Metodo Add per aggiungere un singolo formato all'insieme.

  • Metodo Insert per aggiungere un formato in corrispondenza di un particolare indice all'interno dell'insieme.

  • Metodo Remove per rimuovere un formato.

  • Metodo RemoveAt per rimuovere il formato in corrispondenza di un indice specifico.

  • Metodo Contains per determinare se un formato specifico è già presente nell'insieme.

  • Metodo IndexOf per recuperare l'indice di un formato all'interno dell'insieme.

  • Proprietà Item[] da ottenere o impostare il formato in corrispondenza di un indice specifico, utilizzando la notazione della matrice.

  • Metodo Clear per rimuovere tutti i formati dall'insieme.

  • Proprietà Count per determinare il numero di formati nell'insieme.

  • Metodo IndexOf per ottenere la posizione di un formato all'interno dell'insieme.

Costruttori

DesignerAutoFormatCollection()

Inizializza una nuova istanza della classe DesignerAutoFormatCollection.

Proprietà

Count

Ottiene il numero di oggetti DesignerAutoFormat contenuti nell'insieme.

Item[Int32]

Ottiene o imposta un oggetto DesignerAutoFormat nella raccolta in corrispondenza dell'indice specificato.

PreviewSize

Ottiene le dimensioni esterne massime del controllo, come verrebbe visualizzato in fase di esecuzione.

SyncRoot

Ottiene un oggetto che può essere usato per sincronizzare l'accesso all'oggetto DesignerAutoFormatCollection.

Metodi

Add(DesignerAutoFormat)

Aggiunge l'oggetto DesignerAutoFormat specificato alla fine dell'insieme.

Clear()

Rimuove tutti i formati dalla raccolta.

Contains(DesignerAutoFormat)

Determina se il formato specificato è contenuto nella raccolta.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IndexOf(DesignerAutoFormat)

Restituisce l'indice dell'oggetto DesignerAutoFormat specificato all'interno della raccolta.

Insert(Int32, DesignerAutoFormat)

Inserisce un oggetto DesignerAutoFormat nell'insieme, in corrispondenza dell'indice specificato.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Remove(DesignerAutoFormat)

Rimuove l'oggetto DesignerAutoFormat specificato dalla raccolta.

RemoveAt(Int32)

Rimuove l'oggetto DesignerAutoFormat in corrispondenza dell'indice specificato all'interno della raccolta.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

ICollection.CopyTo(Array, Int32)

Copia gli elementi dell'insieme in un oggetto Array, a partire da un indice Array particolare quando si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia ICollection.

ICollection.Count

Ottiene il numero di elementi contenuti nell'insieme quando si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia ICollection.

ICollection.IsSynchronized

Ottiene un valore che indica se l'accesso all'insieme è sincronizzato (thread-safe) quando si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia ICollection.

IEnumerable.GetEnumerator()

Restituisce un'interfaccia IEnumerator che consente di scorrere l'insieme se si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia IEnumerable.

IList.Add(Object)

Aggiunge un elemento all'insieme se si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia IList.

IList.Contains(Object)

Determina se l'insieme contiene un valore specifico se si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia IList.

IList.IndexOf(Object)

Determina l'indice di un elemento specifico nell'insieme se si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia IList.

IList.Insert(Int32, Object)

Inserisce un elemento nell'insieme in corrispondenza dell'indice specificato se si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia IList.

IList.IsFixedSize

Ottiene un valore che indica se l'insieme è di dimensioni fisse quando si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia IList.

IList.IsReadOnly

Per una descrizione di questo metodo, vedere IsReadOnly.

IList.Item[Int32]

Ottiene l'elemento in corrispondenza dell'indice specificato quando si esegue il cast dell'oggetto DesignerAutoFormatCollection in un'interfaccia IList.

IList.Remove(Object)

Rimuove la prima occorrenza di un oggetto specifico dall'insieme se si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia IList.

IList.RemoveAt(Int32)

Rimuove l'elemento in corrispondenza dell'indice specificato se si esegue il cast dell'oggetto DesignerAutoFormatCollection su un'interfaccia IList.

Metodi di estensione

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.

Si applica a

Vedi anche