DesignerAutoFormat 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
디자인 타임에 사용자 지정 웹 서버에 적용할 수 있는 서식을 만들기 위한 추상 기본 클래스를 제공합니다.
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 컨트롤은 다양 한 디자인 타임에 개발자가 적용 될 수 있는 형식 제공 합니다.
구현 하려면 사용자 지정 컨트롤에 대 한 자동 서식 지정.
사용자 지정 컨트롤을 만듭니다.
디자이너 클래스를 파생 합니다 ControlDesigner 클래스 또는 다른 디자이너 클래스와 같은 사용자 컨트롤에 해당 하는 TextControlDesigner합니다.
형식 클래스를 파생 합니다 DesignerAutoFormat 재정의 하 여 사용자 지정 컨트롤 서식을 지정 하는 클래스는 Apply 메서드.
디자이너 클래스를 채울 합니다 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 개체를 나타내는 문자열을 반환합니다. |
적용 대상
추가 정보
.NET