DesignerAutoFormatCollection 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示控件设计器中 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 属性。 派生控件设计器通过添加派生自 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 属性,添加自定义自动格式设置样式,并将受支持的格式集合返回到可视化设计器。
集合随着对象的添加而动态增加。 此集合中的索引从零开始。 Count使用 属性可确定集合中的自动样式格式数。
此外,使用 DesignerAutoFormatCollection 方法和属性提供以下功能:
向 Add 集合添加单个格式的方法。
用于 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) |
显式接口实现
扩展方法
Cast<TResult>(IEnumerable) |
将 IEnumerable 的元素强制转换为指定的类型。 |
OfType<TResult>(IEnumerable) |
根据指定类型筛选 IEnumerable 的元素。 |
AsParallel(IEnumerable) |
启用查询的并行化。 |
AsQueryable(IEnumerable) |
将 IEnumerable 转换为 IQueryable。 |