다음을 통해 공유


DesignerAutoFormat 클래스

정의

디자인 타임에 사용자 지정 웹 서버에 적용할 수 있는 서식을 만들기 위한 추상 기본 클래스를 제공합니다.

public ref class DesignerAutoFormat abstract
public abstract class DesignerAutoFormat
type DesignerAutoFormat = class
Public MustInherit Class DesignerAutoFormat
상속
DesignerAutoFormat

예제

다음 코드 예제에서는 사용자 지정 컨트롤 디자이너에서 자동 서식 지정을 구현 하는 방법에 설명 합니다. 파생된 컨트롤 디자이너 구현 합니다 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

설명

DesignerAutoFormat 는 Visual Studio 2005와 같은 비주얼 디자이너 도구에서 디자인 타임에 서식이 지정된 사용자 지정 웹 서버 컨트롤을 표시하기 위해 상속 및 확장할 수 있는 기본 클래스를 제공합니다.

컨트롤 개발자는 컨트롤을 사용 하 여 기본 표시를 선택 하는 개발자를 지원 하기 위해 자동 서식 지정을 제공 합니다. 사용자 지정 DesignerAutoFormat 개체 사용자 지정 컨트롤에 대 한 디자인 타임에 자동 서식을 제공 하는 사용자 지정 컨트롤 디자이너를 사용 하 여 작동 합니다. 예를 들어를 Calendar 컨트롤은 다양 한 디자인 타임에 개발자가 적용 될 수 있는 형식 제공 합니다.

구현 하려면 사용자 지정 컨트롤에 대 한 자동 서식 지정.

  1. 사용자 지정 컨트롤을 만듭니다.

  2. 디자이너 클래스를 파생 합니다 ControlDesigner 클래스 또는 다른 디자이너 클래스와 같은 사용자 컨트롤에 해당 하는 TextControlDesigner합니다.

  3. 형식 클래스를 파생 합니다 DesignerAutoFormat 재정의 하 여 사용자 지정 컨트롤 서식을 지정 하는 클래스는 Apply 메서드.

  4. 디자이너 클래스를 채울 합니다 AutoFormats 속성, 즉를 DesignerAutoFormatCollection 디자이너 적용할 수 있는 각 명명 된 형식에 대 한 형식 클래스의 인스턴스 하나를 사용 하 여 개체입니다.

DesignerAutoFormat 클래스는 디자인 타임에 자동 서식 지정을 지원 하기 위해 다음과 같은 멤버를 제공 합니다.

  • Apply 명명 된 형식으로 지정된 된 컨트롤에 적용 되는 메서드.

  • GetPreviewControl Visual Studio 2005와 같은 비주얼 디자이너의 자동 서식 대화 상자에서 미리 보기에 대한 컨트롤의 복사본을 제공하는 메서드입니다.

  • Name 비주얼 디자이너에서 형식 목록에 표시할 텍스트를 제공 하는 속성입니다.

구현자 참고

상속 하는 경우는 DesignerAutoFormat 재정의 해야 클래스는 Apply(Control) 서식이 지정 된 컨트롤을 미리 보기를 선택한 형식으로 컨트롤에 적용할 메서드.

생성자

DesignerAutoFormat(String)

DesignerAutoFormat 클래스의 새 인스턴스를 초기화합니다.

속성

Name

DesignerAutoFormat 개체의 이름을 가져옵니다.

Style

DesignerAutoFormatStyle 개체에서 연결된 컨트롤의 디자인 타임 미리 보기를 렌더링하는 데 사용하는 DesignerAutoFormat 개체를 가져옵니다.

메서드

Apply(Control)

지정된 컨트롤에 연결된 서식을 적용합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetPreviewControl(Control)

컨트롤에 서식을 적용하기 전에 미리 보기를 제공하기 위해 연결된 컨트롤의 복사본을 반환합니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 DesignerAutoFormat 개체를 나타내는 문자열을 반환합니다.

적용 대상

추가 정보