Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Designer wie Editoren müssen in der Regel Rückgängig-Vorgänge unterstützen, damit Benutzer ihre letzten Änderungen beim Ändern eines Codeelements rückgängig machen können.
Die meisten in Visual Studio implementierten Designer verfügen automatisch über "Rückgängig"-Unterstützung, die von der Umgebung bereitgestellt wird.
Implementierungen im Designer, die Unterstützung für die Rückgängig-Funktion bereitstellen müssen:
Bereitstellen der Rückgängig-Verwaltung durch Implementieren der abstrakten Basisklasse UndoEngine
Bereitstellen von Persistenz und CodeDOM-Unterstützung durch Implementieren der IDesignerSerializationService und IComponentChangeService Klassen.
Weitere Informationen zum Schreiben von Designern mit .NET Framework finden Sie unter Erweitern Design-Time Support.
Das Visual Studio SDK bietet eine standardmäßige Rückgängig-Infrastruktur, indem es:
Implementierungen für Rückgängig-Verwaltung durch die Klassen OleUndoEngine und OleUndoEngine.UndoUnit bereitstellen.
Bereitstellen von Persistenz und CodeDOM-Unterstützung über die Standard CodeDomComponentSerializationService - und IComponentChangeService Implementierungen.
Automatisches Abrufen des Rückgängig-Supports
Jeder in Visual Studio erstellte Designer verfügt über eine automatische und vollständige Rückgängig-Funktion, wenn der Designer:
Verwendet eine Control basierte Klasse für die Benutzeroberfläche.
Verwendet standardmäßiges CodeDOM-basiertes Codegenerierungs- und Analysesystem für die Codegenerierung und Persistenz.
Weitere Informationen zum Arbeiten mit der Visual Studio CodeDOM-Unterstützung finden Sie unter Dynamische Quellcodegenerierung und Kompilierung.
Wann sollte man die explizite Designer-Rückgängig-Unterstützung verwenden?
Designer müssen ihre eigene Rückgängig-Verwaltung bereitstellen, wenn sie eine grafische Benutzeroberfläche verwenden, die als Ansichtsadapter bezeichnet wird, außer dem von Control bereitgestellten.
Ein Beispiel hierfür könnte das Erstellen eines Produkts mit einer webbasierten grafischen Entwurfsschnittstelle anstelle einer .NET Framework-basierten grafischen Schnittstelle sein.
In solchen Fällen müsste man diesen Ansichtsadapter mit Visual Studio registrieren ProvideViewAdapterAttributeund eine explizite Rückgängig-Verwaltung bereitstellen.
Designer müssen CodeDOM- und Persistenzunterstützung bereitstellen, wenn sie das Modell zur Codegenerierung von Visual Studio im System.CodeDom Namensraum nicht verwenden.
Rückgängigmachen der Supportfeatures des Designers
Das Environment SDK bietet Standardimplementierungen von Schnittstellen, die erforderlich sind, um Rückgängig-Unterstützung bereitzustellen, die von Designern verwendet werden können, die keine Control basierten Klassen für ihre Benutzeroberflächen oder das standardmäßige CodeDOM- und Persistenzmodell verwenden können.
Die OleUndoEngine Klasse wird von der .NET Framework-Klasse UndoEngine abgeleitet, indem eine Implementierung der IOleUndoManager Klasse zum Verwalten von Rückgängig-Vorgängen verwendet wird.
Visual Studio stellt die folgende Funktion zum Rückgängigmachen von Vorgängen im Designer bereit:
Verknüpfte Rückgängig-Funktionen in mehreren Designern.
Kindereinheiten innerhalb eines Designers können mit ihren Eltern interagieren, indem sie IOleUndoUnit und IOleParentUndoUnit auf OleUndoEngine.UndoUnit implementieren.
Das Environment SDK bietet CodeDOM- und Persistenzunterstützung, indem Folgendes bereitgestellt wird:
CodeDomComponentSerializationService als Umsetzung der IDesignerSerializationService
Ein IComponentChangeService vom Visual Studio-Designhost bereitgestelltes Element.
Verwenden der Umgebungs-SDK-Features zur Bereitstellung der Rückgängig-Funktion
Um Unterstützung für "Rückgängig machen" zu erhalten, muss ein Objekt, das einen Designer implementiert, eine Instanz der OleUndoEngine-Klasse mit einer gültigen IServiceProvider-Implementierung instanziieren und initialisieren. Diese IServiceProvider Klasse muss die folgenden Dienste bereitstellen:
-
Designer, die die Visual Studio CodeDOM-Serialisierung verwenden, können sich dafür entscheiden, CodeDomComponentSerializationService zusammen mit dem Visual Studio SDK als Umsetzung des IDesignerSerializationService zu nutzen.
In diesem Fall sollte die dem OleUndoEngine-Konstruktor bereitgestellte IServiceProvider-Klasse dieses Objekt als Implementierung der IDesignerSerializationService-Klasse zurückgeben.
-
Designer, die den vom Visual Studio-Entwurfshost bereitgestellten Standard DesignSurface verwenden, verfügen garantiert über eine Standardimplementierung der IComponentChangeService Klasse.
Designer, die einen OleUndoEngine-basierten Rückgängig-Mechanismus implementieren, verfolgen Änderungen automatisch, wenn:
Eigenschaftenänderungen werden über das TypeDescriptor Objekt vorgenommen.
IComponentChangeService Ereignisse werden manuell generiert, wenn eine rückgängig machbare Änderung übernommen wird.
Die Veränderung im Designer wurde im Kontext eines DesignerTransaction vorgenommen.
Der Designer entscheidet sich, Rückgängig-Einheiten explizit zu erstellen, indem er entweder die Standard-Rückgängig-Einheit verwendet, die durch eine Implementierung von UndoEngine.UndoUnit bereitgestellt wird, oder die Visual Studio-spezifische Implementierung OleUndoEngine.UndoUnit, die von UndoEngine.UndoUnit abgeleitet ist und auch Implementierungen sowohl von IOleUndoUnit als auch von IOleParentUndoUnit bietet.