DesignerAutoFormatCollection クラス
アセンブリ: System.Design (system.design.dll 内)


ControlDesigner クラスおよびすべての派生クラスでは、AutoFormats プロパティは DesignerAutoFormatCollection オブジェクトとして定義されます。コントロール開発者は、派生コントロール デザイナ内の AutoFormats プロパティをオーバーライドし、カスタムのオートフォーマット スタイルを追加し、サポートされる書式のコレクションをビジュアルなデザイナに返すことができます。
コレクションは、オブジェクトが追加されるごとに動的に大きくなります。このコレクションのインデックスは 0 から始まります。コレクション内の自動スタイル書式の数を調べるには、Count プロパティを使用します。
さらに、DesignerAutoFormatCollection のメソッドおよびプロパティを使用して、次の機能を提供します。

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

System.Web.UI.Design.DesignerAutoFormatCollection


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- DesignerAutoFormatCollection クラスのページへのリンク