Podpora vrácení zpět návrhářům
Návrháři, jako jsou editory, obvykle potřebují podporovat operace vrácení zpět, aby uživatelé mohli při úpravě elementu kódu vrátit zpět své nedávné změny.
Většina návrhářů implementovaných v sadě Visual Studio podporuje funkci zpět automaticky poskytovanou prostředím.
Implementace návrháře, které potřebují poskytovat podporu pro funkci vrácení zpět:
Poskytnutí správy zpět implementací abstraktní základní třídy UndoEngine
Zajištění trvalosti a podpory CodeDOM implementací IDesignerSerializationService a IComponentChangeService tříd.
Další informace o psaní návrhářů pomocí rozhraní .NET Framework naleznete v tématu Rozšíření podpory návrhu v čase.
Sada Visual Studio SDK poskytuje výchozí infrastrukturu pro vrácení zpět:
Poskytování implementací správy zpět prostřednictvím OleUndoEngine tříd.OleUndoEngine.UndoUnit
Poskytování trvalosti a podpory CodeDOM prostřednictvím výchozích CodeDomComponentSerializationService a IComponentChangeService implementací.
Získání podpory zpět automaticky
Jakýkoli návrhář vytvořený v sadě Visual Studio má automatickou a úplnou podporu vrácení zpět, pokud návrhář:
Využívá třídu založenou na svém uživatelském Control rozhraní.
Využívá standardní generování kódu založeného na CodeDOM a parsování systému pro generování a trvalost kódu.
Další informace o práci s podporou editoru Visual Studio CodeDOM naleznete v tématu Generování a kompilace dynamického zdrojového kódu.
Kdy použít podporu explicitního návrháře zpět
Návrháři musí zadat vlastní správu zpět, pokud používají grafické uživatelské rozhraní, označované jako adaptér zobrazení, jiné než ten, který Controlposkytuje .
Příkladem může být vytvoření produktu s webovým grafickým návrhovým rozhraním místo grafického rozhraní založeného na rozhraní .NET Framework.
V takových případech by bylo nutné zaregistrovat tento adaptér zobrazení v sadě Visual Studio pomocí ProvideViewAdapterAttributea poskytnout explicitní správu zpět.
Návrháři potřebují poskytnout podporu CodeDOM a trvalosti, pokud nepoužívají model generování kódu sady Visual Studio zadaný v System.CodeDom prostoru názvů.
Vrácení funkcí podpory Návrháře zpět
Sada Sdk prostředí poskytuje výchozí implementace rozhraní potřebných k poskytování podpory vrácení zpět, kterou mohou použít návrháři, kteří nepoužívají Control třídy založené na uživatelských rozhraních nebo standardní model CodeDOM a trvalosti.
Třída OleUndoEngine je odvozena z .NET Framework UndoEngine třídy pomocí implementace IOleUndoManager třídy ke správě operací vrácení zpět.
Visual Studio poskytuje následující funkci pro vrácení zpět návrháře:
Propojené funkce zpět napříč několika návrháři
Podřízené jednotky v návrháři mohou komunikovat s jejich rodiči implementací IOleUndoUnit a IOleParentUndoUnit na OleUndoEngine.UndoUnit.
Sada SDK prostředí poskytuje podporu CodeDOM a trvalosti tím, že poskytuje:
CodeDomComponentSerializationService jako provádění IDesignerSerializationService
Hostitel IComponentChangeService návrhu sady Visual Studio poskytuje.
Použití funkcí sady SDK prostředí k poskytování podpory pro vrácení zpět
Chcete-li získat podporu vrácení zpět, objekt implementuje návrhář musí vytvořit instanci a inicializovat instanci OleUndoEngine třídy s platnou IServiceProvider implementací. Tato IServiceProvider třída musí poskytovat následující služby:
-
Návrháři používající serializaci editoru Visual Studio CodeDOM se mohou rozhodnout, že budou k dispozici CodeDomComponentSerializationService se sadou Visual Studio SDK jako její implementace IDesignerSerializationService.
V tomto případě IServiceProvider by třída poskytnutá OleUndoEngine konstruktoru měla vrátit tento objekt jako implementaci IDesignerSerializationService třídy.
-
Návrháři používající výchozí nastavení DesignSurface , které poskytuje hostitel návrhu sady Visual Studio, mají zaručenou výchozí implementaci IComponentChangeService třídy.
Návrháři implementační OleUndoEngine mechanismus vrácení zpět automaticky sledují změny v následujících případech:
Změny vlastností se provádějí prostřednictvím objektu TypeDescriptor .
IComponentChangeService události se ručně generují při potvrzení změny, která se dá vrátit zpět.
Úpravy návrháře byly vytvořeny v kontextu objektu DesignerTransaction.
Návrhář se rozhodne explicitně vytvořit zpět jednotky pomocí standardní jednotky vrácení zpět poskytované implementací UndoEngine.UndoUnit nebo implementace OleUndoEngine.UndoUnitspecifické pro Visual Studio , která je odvozena z UndoEngine.UndoUnit a také poskytuje implementaci obou IOleUndoUnit a IOleParentUndoUnit.