DesignerAutoFormatCollection Klass

Definition

Representerar en samling DesignerAutoFormat objekt i en kontrolldesigner. Det går inte att ärva den här klassen.

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
Arv
DesignerAutoFormatCollection
Implementeringar

Exempel

Följande kodexempel visar hur du AutoFormats implementerar egenskapen i en anpassad kontrolldesigner. Den härledda kontrolldesignern implementerar AutoFormats egenskapen genom att lägga till tre instanser av ett anpassat automatiskt format som härleds från DesignerAutoFormat klassen.

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

Kommentarer

Klassen ControlDesigner och alla härledda klasser definierar AutoFormats egenskapen som ett DesignerAutoFormatCollection objekt. Kontrollutvecklare kan åsidosätta AutoFormats egenskapen i en härledd kontrolldesigner, lägga till anpassade automatiska formatmallar och returnera samlingen med format som stöds till den visuella designern.

Samlingen ökar dynamiskt när objekt läggs till. Index i den här samlingen är nollbaserade. Använd egenskapen Count för att avgöra hur många automatiska formatmallar som finns i samlingen.

Använd dessutom DesignerAutoFormatCollection metoderna och egenskaperna för att tillhandahålla följande funktioner:

  • Metoden Add för att lägga till ett enda format i samlingen.

  • Metoden Insert för att lägga till ett format vid ett visst index i samlingen.

  • Metoden Remove för att ta bort ett format.

  • Metoden RemoveAt för att ta bort formatet vid ett visst index.

  • Metoden Contains för att avgöra om ett visst format redan finns i samlingen.

  • Metoden IndexOf för att hämta indexet för ett format i samlingen.

  • Egenskapen Item[] för att hämta eller ange formatet på ett visst index med hjälp av matris notation.

  • Metoden Clear för att ta bort alla format från samlingen.

  • Egenskapen Count för att fastställa antalet format i samlingen.

  • Metoden IndexOf för att hämta positionen för ett format i samlingen.

Konstruktorer

Name Description
DesignerAutoFormatCollection()

Initierar en ny instans av DesignerAutoFormatCollection klassen.

Egenskaper

Name Description
Count

Hämtar antalet DesignerAutoFormat objekt i samlingen.

Item[Int32]

Hämtar eller anger ett DesignerAutoFormat objekt vid det angivna indexet i samlingen.

PreviewSize

Hämtar kontrollens maximala yttre dimensioner så som den visas vid körning.

SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomsten DesignerAutoFormatCollection till objektet.

Metoder

Name Description
Add(DesignerAutoFormat)

Lägger till det angivna DesignerAutoFormat objektet i slutet av samlingen.

Clear()

Tar bort alla format från samlingen.

Contains(DesignerAutoFormat)

Avgör om det angivna formatet finns i samlingen.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IndexOf(DesignerAutoFormat)

Returnerar indexet för det angivna DesignerAutoFormat objektet i samlingen.

Insert(Int32, DesignerAutoFormat)

Infogar ett DesignerAutoFormat objekt i samlingen vid det angivna indexet.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
Remove(DesignerAutoFormat)

Tar bort det angivna DesignerAutoFormat objektet från samlingen.

RemoveAt(Int32)

Tar bort objektet DesignerAutoFormat vid det angivna indexet i samlingen.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

Name Description
ICollection.CopyTo(Array, Int32)

Kopierar elementen i samlingen till ett Array objekt, med början vid ett visst Array index när DesignerAutoFormatCollection objektet skickas till ett ICollection gränssnitt.

ICollection.Count

Hämtar antalet element som finns i samlingen när objektet DesignerAutoFormatCollection skickas till ett ICollection gränssnitt.

ICollection.IsSynchronized

Hämtar ett värde som anger om åtkomsten till samlingen synkroniseras (trådsäker) när DesignerAutoFormatCollection objektet skickas till ett ICollection gränssnitt.

IEnumerable.GetEnumerator()

Returnerar ett IEnumerator gränssnitt som itererar genom samlingen när objektet DesignerAutoFormatCollection omvandlas till ett IEnumerable gränssnitt.

IList.Add(Object)

Lägger till ett objekt i samlingen när objektet DesignerAutoFormatCollection castas till ett IList gränssnitt.

IList.Contains(Object)

Avgör om samlingen innehåller ett specifikt värde när objektet DesignerAutoFormatCollection omvandlas till ett IList gränssnitt.

IList.IndexOf(Object)

Avgör indexet för ett specifikt objekt i samlingen när objektet DesignerAutoFormatCollection omvandlas till ett IList gränssnitt.

IList.Insert(Int32, Object)

Infogar ett objekt i samlingen vid det angivna indexet DesignerAutoFormatCollection när objektet omvandlas till ett IList gränssnitt.

IList.IsFixedSize

Hämtar ett värde som anger om samlingen har en fast storlek när DesignerAutoFormatCollection objektet skickas till ett IList gränssnitt.

IList.IsReadOnly

En beskrivning av den här metoden finns i IsReadOnly.

IList.Item[Int32]

Hämtar elementet vid det angivna indexet när objektet DesignerAutoFormatCollection skickas till ett IList gränssnitt.

IList.Remove(Object)

Tar bort den första förekomsten av ett specifikt objekt från samlingen när objektet DesignerAutoFormatCollection omvandlas till ett IList gränssnitt.

IList.RemoveAt(Int32)

Tar bort objektet vid det angivna indexet när objektet gjuts DesignerAutoFormatCollection till ett IList gränssnitt.

Tilläggsmetoder

Name Description
AsParallel(IEnumerable)

Möjliggör parallellisering av en fråga.

AsQueryable(IEnumerable)

Konverterar en IEnumerable till en IQueryable.

Cast<TResult>(IEnumerable)

Omvandlar elementen i en IEnumerable till den angivna typen.

OfType<TResult>(IEnumerable)

Filtrerar elementen i en IEnumerable baserat på en angiven typ.

Gäller för

Se även