Share via


支援多個文件檢視

您可以為編輯器建立不同文件資料和文件檢視物件,為文件提供一個以上的檢視。 在某些情況下,其他文件檢視會很好用:

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

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

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

同步檢視

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

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

確定文件資料是否已開啟

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

DocDataView graphic多重檢視

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

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