DesignerAutoFormat Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit la classe de base abstraite pour créer des formats qui peuvent être appliqués au moment du design à un contrôle serveur Web personnalisé.
public ref class DesignerAutoFormat abstract
public abstract class DesignerAutoFormat
type DesignerAutoFormat = class
Public MustInherit Class DesignerAutoFormat
- Héritage
-
DesignerAutoFormat
Exemples
L’exemple de code suivant montre comment implémenter la mise en forme automatique dans un concepteur de contrôles personnalisé. Le concepteur de contrôles dérivé implémente la AutoFormats propriété en ajoutant trois instances d’un format automatique personnalisé dérivés de la 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
Remarques
DesignerAutoFormat fournit une classe de base qui peut être héritée de et étendue pour afficher un contrôle serveur Web personnalisé mis en forme au moment de la conception dans un outil de concepteur visuel tel que Visual Studio 2005.
Un développeur de contrôles fournit une mise en forme automatique afin d’aider les développeurs qui utilisent le contrôle à sélectionner un affichage préféré. Un objet personnalisé DesignerAutoFormat fonctionne avec un concepteur de contrôles personnalisé pour fournir une mise en forme automatique au moment de la conception d’un contrôle personnalisé. Par exemple, le Calendar contrôle fournit une variété de formats qui peuvent être appliqués par un développeur au moment de la conception.
Pour implémenter la mise en forme automatique d’un contrôle personnalisé :
Créez le contrôle personnalisé.
Dérivez une classe de concepteur à partir de la ControlDesigner classe ou d’une autre classe de concepteur appropriée pour votre contrôle, comme .TextControlDesigner
Dérivez une classe de format de la DesignerAutoFormat classe qui met en forme votre contrôle personnalisé en remplaçant la Apply méthode .
Dans votre classe de concepteur, renseignez la AutoFormats propriété, qui est un DesignerAutoFormatCollection objet, avec une instance de votre classe de format pour chaque format nommé que votre concepteur peut appliquer.
La DesignerAutoFormat classe fournit les membres suivants pour prendre en charge la mise en forme automatique au moment du design :
Méthode Apply , qui applique le format nommé au contrôle spécifié.
La GetPreviewControl méthode, qui fournit une copie du contrôle pour l’aperçu dans une boîte de dialogue Mise en forme automatique d’un concepteur visuel tel que Visual Studio 2005.
Propriété Name , qui fournit le texte à afficher dans une liste de formats dans un concepteur visuel.
Notes pour les responsables de l’implémentation
Lorsque vous héritez de la DesignerAutoFormat classe, vous devez remplacer la Apply(Control) méthode pour afficher un aperçu d’un contrôle mis en forme et appliquer le format sélectionné à votre contrôle.
Constructeurs
DesignerAutoFormat(String) |
Initialise une nouvelle instance de la classe DesignerAutoFormat. |
Propriétés
Name |
Obtient le nom d'un objet DesignerAutoFormat. |
Style |
Obtient un objet DesignerAutoFormatStyle qui est utilisé par l'objet DesignerAutoFormat pour afficher un aperçu au moment du design du contrôle associé. |
Méthodes
Apply(Control) |
Applique la mise en forme associée au contrôle spécifié. |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetPreviewControl(Control) |
Retourne une copie du contrôle associé afin de fournir un aperçu avant d'appliquer le format au contrôle. |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Retourne une chaîne qui représente l'objet DesignerAutoFormat actuel. |