共用方式為


支援多個文件視圖

您可以為編輯器建立個別的文件資料及文件視圖物件,以提供文件的多個視圖。 其他文件視圖有用的一些情況包括:

  • 新視窗支援:您希望編輯器提供兩個或多個相同類型的視圖,以便已在編輯器中開啟視窗的使用者可以透過從「視窗」功能表中選取「新視窗」命令來開啟新視窗。

  • 表單和程式碼檢視支援:您希望編輯器提供不同類型的檢視。 例如,Visual Basic 同時提供表單檢視和程式碼檢視。

    如需詳細資訊,請參閱 Visual Studio 套件範本所建立自訂編輯器專案中EditorFactory.cs檔案中的 CreateEditorInstance 程式。 如需此專案的詳細資訊,請參閱 逐步解說:建立自訂編輯器

同步視圖

當您實作多個檢視時,文件資料物件會負責讓所有檢視與資料保持同步。 您可以使用 上的 VsTextBuffer 事件處理介面,將多個檢視與資料同步化。

如果您未使用物件 VsTextBuffer 來同步化多個檢視,則必須實作自己的事件系統,以處理對文件資料物件所做的變更。 您可以使用不同的精細層級來讓多個檢視保持最新狀態。 設定為最大細粒度時,當您在一個視圖中鍵入時,其他視圖會立即更新。 使用最小粒度時,其他檢視在啟動之前不會更新。

判斷文件資料是否已開啟

整合式開發環境 (IDE) 中執行中的文件資料表 (RDT) 有助於追蹤文件的資料是否已開啟,如下圖所示。

DocDataView 圖形

多個視圖

依預設,每個檢視 (文件檢視物件) 都包含在其自己的視窗框 ()IVsWindowFrame 中。 不過,如前所述,文件資料可以顯示在多個檢視中。 若要啟用此功能,Visual Studio 會檢查 RDT,以判斷有問題的文件是否已在編輯器中開啟。 當 IDE 呼叫 CreateEditorInstance 建立編輯器時,參數中 punkDocDataExisting 傳回的非 NULL 值表示文件已在另一個編輯器中開啟。 如需 RDT 運作方式的詳細資訊,請參閱 執行檔資料表

在實 IVsEditorFactory 作中,請檢查傳回的文件 punkDocDataExisting 資料物件,以判斷文件資料是否適合您的編輯器。 (例如,HTML 編輯器只應顯示 HTML 資料。如果合適,則您的編輯器處理站應該為資料提供第二個檢視。 如果 punkDocDataExisting 參數不是 NULL,則可能是文件資料物件已在另一個編輯器中開啟,或更有可能的是,文件資料已在具有相同編輯器的不同視圖中開啟。 如果文件資料是在編輯器處理站不支援的不同編輯器中開啟,則 Visual Studio 無法開啟編輯器處理站。 如需詳細資訊,請參閱 如何:將檢視附加至文件資料