共用方式為


為設計工具提供復原支援

設計工具 (例如編輯器) 通常需要支援復原作業,讓使用者可以在修改程式碼元素時反轉其最近的變更。

在 Visual Studio 中實作的大部分設計工具,都會有環境自動提供的「復原」支援。

需要為復原功能提供支援的設計工具實作:

如需使用 .NET Framework 撰寫設計工具的詳細資訊,請參閱擴充設計時間支援

Visual Studio SDK 透過以下方式提供預設的復原基礎結構:

自動取得復原支援

在 Visual Studio 中建立的任何設計工具都會有自動且完整的復原支援,只要設計工具:

  • 針對其使用者介面使用以 Control 為基礎的類別。

  • 針對程式碼產生和持續性採用標準 CodeDOM 型程式碼產生和剖析系統。

    如需使用 Visual Studio CodeDOM 支援的詳細資訊,請參閱動態原始程式碼產生和編譯

使用明確設計工具復原支援的時機

如果設計工具使用圖形使用者介面 (稱為檢視配接器),而不是提供的 Control 圖形使用者介面,則必須提供自己的復原管理。

其中一個範例可能是使用 Web 型圖形設計介面來建立產品,而不是以 .NET Framework 為基礎的圖形化介面。

在這種情況下,您必須使用 ProvideViewAdapterAttribute 向 Visual Studio 註冊此檢視配接器,並提供明確的復原管理。

如果設計工具不使用 System.CodeDom 命名空間提供的 Visual Studio 程式碼產生模型,則必須提供 CodeDOM 和持續性支援。

設計工具的復原支援功能

環境 SDK 提供復原支援所需的介面預設實作,可供不使用基於 Control 的類別做為其使用者介面或標準 CodeDOM 和持續性模型的設計人員使用。

OleUndoEngine 類別衍生自 .NET Framework UndoEngine 類別,使用 IOleUndoManager 類別的實作來管理復原作業。

Visual Studio 提供下列功能讓設計工具復原:

環境 SDK 提供 CodeDOM 和持續性支援,其方法是提供:

使用環境 SDK 功能提供來復原支援

若要取得復原支援,實作設計工具的物件必須使用有效的 IServiceProvider 實作來具現化和初始化 OleUndoEngine 類別的執行個體。 此 IServiceProvider 類別必須提供下列服務:

實作 OleUndoEngine 型復原機制的設計工具會在以下條件下自動追蹤變更: