次の方法で共有


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 実装する方法を示します。 派生コントロール デザイナーは、 クラスから派生したカスタム自動形式の 3 つのインスタンスを追加することで、 プロパティをDesignerAutoFormat実装AutoFormatsします。

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 し、カスタムの自動書式設定スタイルを追加して、サポートされている書式のコレクションをビジュアル デザイナーに返すことができます。

コレクションは、オブジェクトが追加されると動的に増加します。 このコレクション内のインデックスは 0 から始まります。 コレクション内の Count 自動スタイル形式の数を確認するには、 プロパティを使用します。

さらに、 メソッドとプロパティを DesignerAutoFormatCollection 使用して、次の機能を提供します。

  • Addコレクションに 1 つの形式を追加するメソッド。

  • コレクション内の 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)

IEnumerableIQueryable に変換します。

適用対象

こちらもご覧ください