Partager via


Fournir la prise en charge de l'annulation aux concepteurs

Les concepteurs, comme les éditeurs, doivent généralement prendre en charge les opérations d'annulation afin que les utilisateurs puissent annuler les modifications récentes en modifiant un élément de code.

La plupart des concepteurs implémentés dans Visual Studio font fourni automatiquement la prise en charge de l'annulation par l'environnement.

Implémentations du concepteur qui doivent fournir une prise en charge de la fonctionnalité d'annulation :

Pour plus d'informations sur les générateurs d'écriture à l'aide de .NET Framework, consultez l' Extension de la prise en charge au moment du design.

Kit de développement logiciel Visual Studio fournit une infrastructure par défaut d'annulation par :

Obtention de la prise en charge de l'annulation automatiquement

Tout concepteur créé dans Visual Studio possède une prise en charge automatique et totale d'annulation si, le concepteur :

  • Se sert d'une classe basée sur une Control pour son interface utilisateur.

  • Utilise le système de génération du code CodeDOM-basé standard et d'analyse pour la génération de code et la persistance.

    Pour plus d'informations sur l'utilisation de la prise en charge de Visual Studio CodeDOM, consultez Génération et compilation de code source dynamique

Quand utiliser la prise en charge du concepteur explicite d'annulation

Les concepteurs doivent fournir leur propre gestion d'annulation s'ils utilisent une interface utilisateur graphique, connue sous le nom d'un adaptateur de vue, autre que celle fournie par Control.

Un exemple de cela peut créer un produit avec une interface graphique basée sur le WEB de conception plutôt qu'une interface graphique basée sur une .NET Framework .

Dans ce cas, il doit stocker cet adaptateur de vue avec Visual Studio à l'aide de ProvideViewAdapterAttribute, et assure la gestion explicite d'annulation.

Les concepteurs doivent fournir CodeDOM et prise en charge de persistance s'ils n'utilisent pas le modèle de génération de code Visual Studio fourni dans l'espace de noms d' System.CodeDom .

Fonctionnalités de prise en charge de l'annulation du concepteur

L'environnement Kit de développement SDK fournit des implémentations par défaut d'interfaces nécessaires pour fournir la prise en charge de l'annulation qui peut être utilisée par les concepteurs ne pas utiliser Control en fonction de les classes pour leurs interfaces utilisateur ou le modèle standard CodeDOM et de persistance.

La classe d' OleUndoEngine dérive de la classe de .NET FrameworkUndoEngine à l'aide d'une implémentation de la classe d' IOleUndoManager pour gérer des opérations d'annulation.

Visual Studio fournit les fonctionnalités suivantes à l'annulation du concepteur :

  • Fonctionnalités d'annulation liée à travers plusieurs concepteurs.

  • Les unités enfants dans un concepteur peuvent interagir avec leurs parents en implémentant IOleUndoUnit et IOleParentUndoUnit sur UndoUnit.

L'environnement Kit de développement SDK fournit CodeDOM et prise en charge de persistance en fournissant :

IComponentChangeService fourni par l'hôte de création de Visual Studio .

À l'aide de les fonctionnalités de l'environnement Kit de développement logiciel pour assurer la prise en charge de l'annulation

Pour obtenir la prise en charge de l'annulation, un objet implémentant un concepteur doit :

Les concepteurs implémentant un mécanisme d'annulation basé sur OleUndoEngine suit automatiquement les modifications si :

  • Les modifications de propriété apportées par l'objet d' TypeDescriptor .

  • les événements d'IComponentChangeService manuellement sont générés lorsqu'une modification annulable est validée.

  • La modification dans le concepteur a été créée dans le contexte d' DesignerTransaction.

  • Le concepteur choisit de créer explicitement des unités undo à l'aide de l'unité undo standard fournie par une implémentation d' UndoUnit ou l'implémentation visuelle UndoUnitde Studio-détail, qui dérive d' UndoUnit et fournit également une implémentation d' IOleUndoUnit et d' IOleParentUndoUnit.

Voir aussi

Référence

UndoEngine

OleUndoEngine

Autres ressources

Extension de la prise en charge au moment du design