Fournir une prise en charge de l’annulation aux concepteursSupply undo support to designers
Les concepteurs, comme les éditeurs, doivent généralement prendre en charge les opérations d’annulation afin que les utilisateurs puissent annuler leurs modifications récentes lors de la modification d’un élément de code.Designers, like editors, typically need to support undo operations so that users can reverse their recent changes when modifying a code element.
La plupart des concepteurs implémentés dans Visual Studio ont une prise en charge de « annuler » automatiquement fournie par l’environnement.Most designers implemented in Visual Studio have "undo" support automatically provided by the environment.
Implémentations de concepteur qui doivent assurer la prise en charge de la fonctionnalité d’annulation :Designer implementations that need to provide support for the undo feature:
Fournir la gestion des annulations en implémentant la classe de base abstraite UndoEngineProvide undo management by implementing the abstract base class UndoEngine
Fournir la prise en charge de la persistance et de CodeDOM en implémentant les IDesignerSerializationService IComponentChangeService classes et.Supply persistence and CodeDOM support by implementing the IDesignerSerializationService and IComponentChangeService classes.
Pour plus d’informations sur l’écriture de concepteurs à l’aide de .NET Framework, consultez étendre la prise en charge des Design-Time.For more information on writing designers using .NET Framework, see Extend Design-Time Support.
Le Kit de développement logiciel Visual StudioVisual Studio SDK fournit une infrastructure d’annulation par défaut en procédant comme suit :The Kit de développement logiciel Visual StudioVisual Studio SDK provides a default undo infrastructure by:
Fournir des implémentations de gestion des annulations via les OleUndoEngine OleUndoEngine.UndoUnit classes et.Providing undo management implementations through the OleUndoEngine and OleUndoEngine.UndoUnit classes.
Fourniture de la persistance et de la prise en charge de CodeDOM par le biais des CodeDomComponentSerializationService implémentations et par défaut IComponentChangeService .Supplying persistence and CodeDOM support through the default CodeDomComponentSerializationService and IComponentChangeService implementations.
Obtenir la prise en charge de l’annulation automatiquementObtain Undo Support Automatically
Tout concepteur créé dans Visual Studio dispose d’une prise en charge de l’annulation automatique et complète si, le concepteur :Any designer created in Visual Studio has automatic and full undo support if, the designer:
Utilise une classe de Control base pour son interface utilisateur.Makes use of a Control based class for its user interface.
Utilise le système de génération et d’analyse de code basé sur CodeDOM standard pour la génération et la persistance de code.Employs standard CodeDOM-based code generation and parsing system for code generation and persistence.
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.For more information about working with Visual Studio CodeDOM support, see Dynamic Source Code Generation and Compilation.
Quand utiliser la prise en charge de l’annulation explicite du concepteurWhen to Use Explicit Designer Undo Support
Les concepteurs doivent fournir leur propre gestion des annulations s’ils utilisent une interface utilisateur graphique, appelée adaptateur de vue, autre que celle fournie par Control .Designers must supply their own undo management if they use a graphical user interface, referred to as a view adapter, other than the one supplied by Control.
Par exemple, vous pouvez créer un produit avec une interface de conception graphique basée sur le Web plutôt qu’une interface graphique de type .NET Framework.An example of this might be creating a product with a web-based graphical design interface rather than a .NET Framework-based graphical interface.
Dans ce cas, vous devez inscrire cet adaptateur d’affichage auprès de Visual Studio à l’aide de ProvideViewAdapterAttribute , et fournir une gestion d’annulation explicite.In such cases, one would need to register this view adapter with Visual Studio using ProvideViewAdapterAttribute, and provide explicit undo management.
Les concepteurs doivent fournir la prise en charge de CodeDOM et de la persistance s’ils n’utilisent pas le modèle de génération de code Visual Studio fourni dans l' System.CodeDom espace de noms.Designers need to provide CodeDOM and persistence support if they do not use the Visual Studio code generation model provided in the System.CodeDom name space.
Annuler les fonctionnalités de prise en charge du concepteurUndo Support Features of the Designer
Le kit de développement logiciel (SDK) Environment fournit des implémentations par défaut des interfaces nécessaires pour fournir une prise en charge de l’annulation qui peut être utilisée par les concepteurs qui n’utilisent pas Control de classes basées pour leurs interfaces utilisateur ou le modèle de persistance et CodeDom standard.The Environment SDK provides default implementations of interfaces needed to provide undo support that can be used by designers not using Control based classes for their user interfaces or the standard CodeDOM and persistence model.
La OleUndoEngine classe dérive de la UndoEngine classe .NET Framework à l’aide d’une implémentation de la IOleUndoManager classe pour gérer les opérations d’annulation.The OleUndoEngine class derives from the .NET Framework UndoEngine class using an implementation of the IOleUndoManager class to manage undo operations.
Visual Studio fournit la fonctionnalité suivante pour annuler le concepteur :Visual Studio provides the following feature to designer undo:
Fonctionnalité d’annulation liée entre plusieurs concepteurs.Linked undo functionality across multiple designers.
Les unités enfants au sein d’un concepteur peuvent interagir avec leurs parents en implémentant IOleUndoUnit et IOleParentUndoUnit sur OleUndoEngine.UndoUnit .Child units within a designer can interact with their parents by implementing IOleUndoUnit and IOleParentUndoUnit on OleUndoEngine.UndoUnit.
Le kit de développement logiciel (SDK) Environment fournit la prise en charge de CodeDOM et de la persistance en fournissant :The Environment SDK provides CodeDOM and persistence support by supplying:
CodeDomComponentSerializationService en tant qu’implémentation de la IDesignerSerializationServiceCodeDomComponentSerializationService as an implementation of the IDesignerSerializationService
IComponentChangeServiceFourni par l’hôte de conception Visual Studio.A IComponentChangeService provided by the Visual Studio design host.
Utiliser les fonctionnalités du kit de développement logiciel (SDK) pour fournir une prise en charge d’annulationUse the Environment SDK Features to Supply Undo Support
Pour obtenir la prise en charge de l’annulation, un objet qui implémente un concepteur doit instancier et initialiser une instance de la OleUndoEngine classe avec une IServiceProvider implémentation valide.To obtain undo support, an object implementing a designer must instantiate and initialize an instance of the OleUndoEngine class with a valid IServiceProvider implementation. Cette IServiceProvider classe doit fournir les services suivants :This IServiceProvider class must provide the following services:
-
Les concepteurs qui utilisent la sérialisation CodeDOM de Visual Studio peuvent choisir d’utiliser CodeDomComponentSerializationService fourni avec Kit de développement logiciel Visual StudioVisual Studio SDK comme implémentation de IDesignerSerializationService .Designers using Visual Studio CodeDOM serialization may choose to use CodeDomComponentSerializationService provided with the Kit de développement logiciel Visual StudioVisual Studio SDK as its implementation of the IDesignerSerializationService.
Dans ce cas, la IServiceProvider classe fournie au OleUndoEngine constructeur doit retourner cet objet en tant qu’implémentation de la IDesignerSerializationService classe.In this case, the IServiceProvider class provided to the OleUndoEngine constructor should return this object as an implementation of the IDesignerSerializationService class.
-
Les concepteurs utilisant la valeur par défaut DesignSurface fournie par l’hôte de conception Visual Studio sont assurés d’avoir une implémentation par défaut de la IComponentChangeService classe.Designers using the default DesignSurface provided by the Visual Studio design host are guaranteed to have a default implementation of the IComponentChangeService class.
Les concepteurs qui implémentent un OleUndoEngine mécanisme d’annulation basé automatiquement effectue le suivi des modifications dans les cas suivants :Designers implementing a OleUndoEngine based undo mechanism automatically tracks changes if:
Les modifications de propriété sont effectuées via l' TypeDescriptor objet.Property changes are made through the TypeDescriptor object.
IComponentChangeService les événements sont générés manuellement lorsqu’une modification pouvant être annulée est validée.IComponentChangeService events are manually generated when an undoable change is committed.
La modification apportée au concepteur a été créée dans le contexte d’un DesignerTransaction .Modification on the designer was created within the context of a DesignerTransaction.
Le concepteur choisit explicitement de créer des unités d’annulation à l’aide de l’unité d’annulation standard fournie par une implémentation de UndoEngine.UndoUnit ou de l’implémentation spécifique à Visual Studio OleUndoEngine.UndoUnit , qui dérive de UndoEngine.UndoUnit et fournit également une implémentation de IOleUndoUnit et de IOleParentUndoUnit .The designer chooses to explicitly create undo units using either the standard undo unit provided by an implementation of UndoEngine.UndoUnit or the Visual Studio-specific implementation OleUndoEngine.UndoUnit, which derives from UndoEngine.UndoUnit and also provides an implementation of both IOleUndoUnit and IOleParentUndoUnit.