Architecture de design

L'illustration suivante fournit une vue d'ensemble de l'architecture de design dans le .NET Framework.

Architecture de design

Le .NET Framework fournit des interfaces et des classes pour personnaliser le comportement des composants et les interfaces utilisateur dans un environnement au moment du design. Un environnement au moment du design inclut généralement un concepteur de formulaires qui permet d'organiser des composants et un Explorateur de propriétés qui permet de configurer les valeurs des propriétés d'un composant. En général, un environnement au moment du design fournit également des services au moment du design qui peuvent être atteints et utilisés par des mécanismes de design.

Le .NET Framework définit des interfaces que des développeurs peuvent utiliser pour implémenter une prise en charge personnalisée au moment du design. Les principaux mécanismes d'extension de la prise en charge au moment du design appartiennent aux catégories suivantes : concepteurs, convertisseurs de type et éditeurs de types munis d'une interface utilisateur. Des attributs sont appliqués aux types et aux membres de types pour les associer à ces fournisseurs de prise en charge au moment du design.

Attributs

Les attributs associent un type ou un membre de type à une classe qui étend le comportement au moment du design. DesignerAttribute associe un type à un concepteur. TypeConverterAttribute associe un type ou un membre de type à un convertisseur de type. EditorAttribute associe un type ou un membre de type à un éditeur de types muni d'une interface utilisateur. Pour plus d'informations sur les attributs du .NET Framework, consultez Attributs en mode design pour les composants et Attributs et prise en charge au moment du design.

Concepteurs

Un concepteur peut personnaliser le comportement d'un composant au moment du design, y compris son apparence, son initialisation et son interaction avec l'utilisateur. Un concepteur peut ajouter, supprimer ou remplacer des propriétés répertoriées dans un Explorateur de propriétés pour un composant sélectionné. Un concepteur peut fournir des méthodes définies par un utilisateur, qui peuvent être liées à certains événements de composant ou exécutées à partir d'une commande de menu personnalisée, ou DesignerVerb. Un concepteur peut également utiliser des services fournis par un environnement au moment du design. Pour plus d'informations sur les concepteurs, consultez Concepteurs personnalisés.

Convertisseurs de type

Un convertisseur de type peut être implémenté pour convertir des valeurs entre le type qu'il est destiné à prendre en charge et d'autres types de données vers lesquels et à partir desquels il peut convertir des valeurs. Un convertisseur de type peut également fournir une logique pour permettre la configuration d'une propriété dans un Explorateur de propriétés au moment du design. Un convertisseur de type peut fournir une liste de valeurs standard pour une propriété du type qu'il prend en charge au moment du design dans un Explorateur de propriétés. Un convertisseur de type peut également créer du code d'initialisation pour initialiser une propriété au moment du design. Pour plus d'informations sur l'implémentation d'un convertisseur de type, consultez Comment : implémenter un convertisseur de type.

Éditeurs de types muni d'une interface utilisateur

Un éditeur de types muni d'une interface utilisateur peut fournir une interface utilisateur personnalisée pour modifier la valeur d'une propriété et afficher une représentation de cette valeur au moment du design. Un éditeur de types muni d'une interface utilisateur est spécifique à un type et fournit une interface utilisateur pour configurer des propriétés du type qu'il est destiné à prendre en charge ou des types dérivés qui n'ont pas d'attribut de substitution, au moment du design. Un éditeur de types muni d'une interface utilisateur peut afficher un Windows Form ou une interface de configuration déroulante pour configurer une propriété. Pour plus d'informations sur l'implémentation d'un éditeur de types muni d'une interface utilisateur, consultez Comment : implémenter un éditeur de types d'interface utilisateur.

Notes

Les convertisseurs de type et les éditeurs de types munis d'une interface utilisateur sont utilisés à la fois au moment du design et au moment de l'exécution, alors que les concepteurs ne sont employés qu'au moment du design.

Types liés au design

Les tableaux suivants présentent certaines classes importantes dans les espaces de noms liés au design.

System.Drawing.Design

Type

Description

UITypeEditor

Fournit une classe de base qui peut être utilisée pour implémenter des éditeurs de valeurs.

IToolboxService

Fournit des méthodes et des propriétés pour gérer et interroger la Boîte à outils dans l'environnement de développement.

ToolboxItem

Fournit une implémentation de base d'un élément de boîte à outils.

System.ComponentModel.Design

Type

Description

DesignerActionList

Fournit la classe de base pour les types qui définissent une liste d'éléments utilisés pour créer un panneau des balises actives.

DesignSurface

Présente une interface utilisateur pour concevoir des composants.

IDesigner

Fournit l'infrastructure de base pour la génération d'un concepteur personnalisé.

IRootDesigner

Fournit la prise en charge des technologies d'affichage du concepteur racine.

IExtenderProviderService

Fournit une interface pour ajouter et supprimer des fournisseurs d'extendeurs au moment du design.

UndoEngine

Spécifie les fonctionnalités d'annulation/rétablissement génériques.

System.Windows.Forms.Design

Type

Description

IWindowsFormsEditorService

Fournit une interface utilisée par les éditeurs de types munis d'une interface utilisateur pour l'affichage des Windows Forms ou d'un contrôle dans une zone de liste déroulante à partir d'un contrôle PropertyGrid en mode design.

ControlDesigner

Classe de concepteur de base servant à étendre le comportement en mode design d'un Control.

DocumentDesigner

Classe de concepteur de base permettant d'étendre le comportement en mode design d'un Control qui prend en charge les contrôles imbriqués et reçoit les messages de la barre de défilement, et de fournir une vue design de niveau racine pour ce contrôle.

System.Windows.Forms.Design.Behavior

Type

Description

BehaviorService

Gère l'interface utilisateur dans le concepteur.

Behavior

Représente les objets Behavior managés par un BehaviorService.

Adorner

Gère une collection d'objets Glyph liés à une interface utilisateur. Cette classe ne peut pas être héritée.

Glyph

Représente une seule entité d'interface utilisateur gérée par Adorner.

Services au moment du design

Le .NET Framework fournit un ensemble de services susceptibles d'étendre les possibilités d'un concepteur au moment du design. Ces services peuvent être obtenus à l'aide de la méthode GetService d'un composant installé en mode design. Vous pouvez ajouter vos propres types de services accessibles à partir d'un projet en mode design à l'aide de la méthode AddService de l'interface de service IDesignerHost.

L'interface IComponentChangeService permet à un concepteur de recevoir des notifications sur la modification, l'ajout ou la suppression de composants de l'environnement au moment du design.

L'interface IDesignerEventService permet à un concepteur de recevoir des notifications sur l'ajout ou la suppression de concepteurs dans l'environnement au moment du design et des notifications sur la sélection d'un autre composant.

L'interface IDesignerFilter permet à un concepteur de filtrer l'ensemble des propriétés affichées dans un Explorateur de propriétés pour son composant et d'y ajouter des propriétés.

L'interface IDesignerHost fournit une interface pour l'ajout et la récupération de services, la gestion d'événements relatifs à l'état du concepteur, la détection du chargement en cours d'un concepteur et la gestion de composants ou de transactions du concepteur. Les transactions du concepteur permettent à des séquences d'actions d'avoir lieu dans un mode qui empêche que l'affichage de la vue design soit actualisé jusqu'à l'exécution complète d'une séquence d'actions afin d'améliorer les performances, tout en fournissant un mécanisme pour permettre aux actions de composant d'une transaction d'être annulées et à l'état précédent d'être restauré.

L'interface IDesignerOptionService permet à un concepteur d'obtenir et de définir les valeurs des propriétés répertoriées dans la grille des propriétés du concepteur Windows Forms accessible à partir de l'élément de menu Options situé dans le menu Outils de l'environnement Visual Studio. La classe DesignerOptionService étend la souplesse en matière d'interrogation des options.

L'interface IDictionaryService permet à un concepteur d'utiliser une collection basée sur des clés pour des données définies par un utilisateur et des paires de clés accessibles par clé ou par valeur.

L'interface IEventBindingService permet à un concepteur d'exposer des événements pour un composant dans un Explorateur de propriétés au moment du design lorsque le composant est sélectionné.

L'interface IExtenderListService permet à un concepteur d'obtenir les fournisseurs d'extendeurs actuellement actifs dans l'environnement au moment du design. L'interface IExtenderProviderService permet à un concepteur d'ajouter ou de supprimer des fournisseurs d'extendeurs au moment du design.

L'interface IHelpService permet à un concepteur de créer et de supprimer des contextes de service d'aide, de créer et de supprimer des attributs de contexte d'aide et d'afficher des rubriques d'aide par mot clé ou URL.

L'interface IInheritanceService permet à un concepteur de rechercher des composants de classes dérivées et d'identifier leurs attributs d'héritage.

L'interface IMenuCommandService permet à un concepteur de rechercher, d'ajouter, de supprimer ou d'appeler des commandes de menu dans l'environnement au moment du design.

L'interface IReferenceService permet à un concepteur d'obtenir le nom d'un objet par référence, une référence à un objet par nom, une référence au parent d'un composant donné ou des références à des objets d'un type donné dans le projet actif en mode design.

L'interface IResourceService permet à un concepteur d'obtenir un lecteur ou un writer de ressources pour un CultureInfo spécifié.

L'interface IRootDesigner permet à un concepteur de remplacer la vue de concepteur racine par une vue de concepteur personnalisée. L'interface IRootDesigner doit être implémentée par le concepteur d'un composant.

L'interface ISelectionService permet à un concepteur d'obtenir un ensemble de références aux composants actuellement sélectionnés, d'opter pour la sélection d'un composant ou d'un ensemble de composants et de déterminer si un composant est sélectionné.

L'interface IServiceContainer permet à un concepteur d'ajouter ou de supprimer des services qui peuvent être utilisés par d'autres composants ou concepteurs.

L'interface ITypeDescriptorFilterService permet à un composant ou à un concepteur de filtrer les attributs, les événements et les propriétés exposés par n'importe quel composant au moment du design. L'interface ITypeDescriptorFilterService doit être implémentée par une classe qui peut être ajoutée en tant que service à l'aide de la méthode AddService de Site d'un composant installé en mode design.

L'interface ITypeResolutionService permet à un concepteur d'ajouter au projet une référence à un assembly, d'obtenir un type ou un assembly par nom et d'obtenir le chemin d'accès d'un assembly spécifié.

Les classes DesignerActionService et DesignerActionUIService implémentent la fonctionnalité des balises actives pour les concepteurs personnalisés. Pour plus d'informations, consultez Commandes du concepteur et modèle objet DesignerAction pour les Windows Forms.

BehaviorService gère l'interface utilisateur dans un concepteur. Il fournit un moyen uniforme de manipuler des éléments d'interface utilisateur tels que les événements liés à la souris, les commandes de menu et les opérations glisser-déplacer OLE au moment du design. Pour plus d'informations, consultez Vue d'ensemble du service de comportement.

La classe CodeDomComponentSerializationService sérialise un ensemble de composants ou d'objets sérialisables dans un magasin de sérialisation. Pour plus d'informations, consultez Vue d'ensemble de la sérialisation du concepteur.

Voir aussi

Tâches

Comment : implémenter un convertisseur de type

Comment : implémenter un éditeur de types d'interface utilisateur

Comment : accéder aux services au moment du design

Comment : accéder à la prise en charge au moment du design dans les Windows Forms

Concepts

Attributs et prise en charge au moment du design

Commandes du concepteur et modèle objet DesignerAction pour les Windows Forms

Vue d'ensemble du service de comportement

Vue d'ensemble de la sérialisation du concepteur

Autres ressources

Extension de la prise en charge au moment du design

Concepteurs personnalisés