Lire en anglais

Partager via


DesignerAutoFormat Classe

Définition

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é.

C#
public abstract 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 .

C#
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;
                    }
                }
            }
        }
    }
}

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é :

  1. Créez le contrôle personnalisé.

  2. 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

  3. 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 .

  4. 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.

S’applique à

Produit Versions
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Voir aussi