DesignerAutoFormatCollection Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa uma coleção de DesignerAutoFormat objetos dentro de um designer de controlo. Esta classe não pode ser herdada.
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
- Herança
-
DesignerAutoFormatCollection
- Implementações
Exemplos
O exemplo de código seguinte demonstra como implementar a AutoFormats propriedade num designer de controlo personalizado. O designer de controlo derivado implementa a AutoFormats propriedade adicionando três instâncias de um formato automático personalizado que são derivadas da DesignerAutoFormat classe.
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
Observações
A ControlDesigner classe e qualquer classe derivada definem a AutoFormats propriedade como um DesignerAutoFormatCollection objeto. Os programadores de controlo podem sobrescrever a AutoFormats propriedade num designer de controlos derivado, adicionar estilos de formatação automática personalizados e devolver a coleção de formatos suportados ao designer visual.
A coleção aumenta dinamicamente à medida que os objetos são adicionados. Os índices nesta coleção são baseados em zero. Use a Count propriedade para determinar quantos formatos de estilo automático existem na coleção.
Adicionalmente, utilize os DesignerAutoFormatCollection métodos e propriedades para fornecer a seguinte funcionalidade:
O Add método para adicionar um único formato à coleção.
O Insert método para adicionar um formato num índice específico dentro da coleção.
O Remove método para remover um formato.
O RemoveAt método para remover o formato num índice específico.
O Contains método para determinar se um determinado formato já está na coleção.
O IndexOf método para recuperar o índice de um formato dentro da coleção.
A Item[] propriedade para obter ou definir o formato num índice específico, usando notação de array.
O Clear método para remover todos os formatos da coleção.
A Count propriedade para determinar o número de formatos na coleção.
O IndexOf método para obter a posição de um formato dentro da coleção.
Construtores
| Name | Description |
|---|---|
| DesignerAutoFormatCollection() |
Inicializa uma nova instância da DesignerAutoFormatCollection classe. |
Propriedades
| Name | Description |
|---|---|
| Count |
Obtém o número de DesignerAutoFormat objetos na coleção. |
| Item[Int32] |
Obtém ou define um DesignerAutoFormat objeto no índice especificado na coleção. |
| PreviewSize |
Obtém as dimensões exteriores máximas do controlo tal como ele aparecerá em tempo de execução. |
| SyncRoot |
Obtém um objeto que pode ser usado para sincronizar o acesso ao DesignerAutoFormatCollection objeto. |
Métodos
| Name | Description |
|---|---|
| Add(DesignerAutoFormat) |
Adiciona o objeto especificado DesignerAutoFormat ao final da coleção. |
| Clear() |
Remove todos os formatos da coleção. |
| Contains(DesignerAutoFormat) |
Determina se o formato especificado está incluído na coleção. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IndexOf(DesignerAutoFormat) |
Devolve o índice do objeto especificado DesignerAutoFormat dentro da coleção. |
| Insert(Int32, DesignerAutoFormat) |
Insere um DesignerAutoFormat objeto na coleção no índice especificado. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| Remove(DesignerAutoFormat) |
Remove o objeto especificado DesignerAutoFormat da coleção. |
| RemoveAt(Int32) |
Remove o DesignerAutoFormat objeto no índice especificado dentro da coleção. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Copia os elementos da coleção para um Array objeto, começando num índice específico Array quando o DesignerAutoFormatCollection objeto é lançado para uma ICollection interface. |
| ICollection.Count |
Obtém o número de elementos contidos na coleção quando o DesignerAutoFormatCollection objeto é lançado para uma ICollection interface. |
| ICollection.IsSynchronized |
Recebe um valor que indica se o acesso à coleção está sincronizado (thread safe) quando o DesignerAutoFormatCollection objeto é lançado para uma ICollection interface. |
| IEnumerable.GetEnumerator() |
Devolve uma IEnumerator interface que itera pela coleção quando o DesignerAutoFormatCollection objeto é lançado para uma IEnumerable interface. |
| IList.Add(Object) |
Adiciona um item à coleção quando o DesignerAutoFormatCollection objeto é lançado para uma IList interface. |
| IList.Contains(Object) |
Determina se a coleção contém um valor específico quando o DesignerAutoFormatCollection objeto é lançado para uma IList interface. |
| IList.IndexOf(Object) |
Determina o índice de um item específico na coleção quando o DesignerAutoFormatCollection objeto é lançado para uma IList interface. |
| IList.Insert(Int32, Object) |
Insere um item na coleção no índice especificado quando o DesignerAutoFormatCollection objeto é lançado para uma IList interface. |
| IList.IsFixedSize |
Recebe um valor que indica se a coleção tem um tamanho fixo quando o DesignerAutoFormatCollection objeto é lançado para uma IList interface. |
| IList.IsReadOnly |
Para uma descrição deste método, veja IsReadOnly. |
| IList.Item[Int32] |
Obtém o elemento no índice especificado quando o DesignerAutoFormatCollection objeto é conjurado para uma IList interface. |
| IList.Remove(Object) |
Remove a primeira ocorrência de um objeto específico da coleção quando o DesignerAutoFormatCollection objeto é lançado para uma IList interface. |
| IList.RemoveAt(Int32) |
Remove o item no índice especificado quando o DesignerAutoFormatCollection objeto é confundido para uma IList interface. |
Métodos da Extensão
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Permite a paralelização de uma consulta. |
| AsQueryable(IEnumerable) |
Converte um IEnumerable para um IQueryable. |
| Cast<TResult>(IEnumerable) |
Conjura os elementos de an IEnumerable para o tipo especificado. |
| OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base num tipo especificado. |