您可以為編輯器建立個別的文件資料及文件視圖物件,以提供文件的多個視圖。 其他文件視圖有用的一些情況包括:
新視窗支援:您希望編輯器提供兩個或多個相同類型的視圖,以便已在編輯器中開啟視窗的使用者可以透過從「視窗」功能表中選取「新視窗」命令來開啟新視窗。
表單和程式碼檢視支援:您希望編輯器提供不同類型的檢視。 例如,Visual Basic 同時提供表單檢視和程式碼檢視。
如需詳細資訊,請參閱 Visual Studio 套件範本所建立自訂編輯器專案中EditorFactory.cs檔案中的 CreateEditorInstance 程式。 如需此專案的詳細資訊,請參閱 逐步解說:建立自訂編輯器。
同步視圖
當您實作多個檢視時,文件資料物件會負責讓所有檢視與資料保持同步。 您可以使用 上的 VsTextBuffer 事件處理介面,將多個檢視與資料同步化。
如果您未使用物件 VsTextBuffer 來同步化多個檢視,則必須實作自己的事件系統,以處理對文件資料物件所做的變更。 您可以使用不同的精細層級來讓多個檢視保持最新狀態。 設定為最大細粒度時,當您在一個視圖中鍵入時,其他視圖會立即更新。 使用最小粒度時,其他檢視在啟動之前不會更新。
判斷文件資料是否已開啟
整合式開發環境 (IDE) 中執行中的文件資料表 (RDT) 有助於追蹤文件的資料是否已開啟,如下圖所示。
多個視圖
依預設,每個檢視 (文件檢視物件) 都包含在其自己的視窗框 ()IVsWindowFrame 中。 不過,如前所述,文件資料可以顯示在多個檢視中。 若要啟用此功能,Visual Studio 會檢查 RDT,以判斷有問題的文件是否已在編輯器中開啟。 當 IDE 呼叫 CreateEditorInstance 建立編輯器時,參數中 punkDocDataExisting 傳回的非 NULL 值表示文件已在另一個編輯器中開啟。 如需 RDT 運作方式的詳細資訊,請參閱 執行檔資料表。
在實 IVsEditorFactory 作中,請檢查傳回的文件 punkDocDataExisting 資料物件,以判斷文件資料是否適合您的編輯器。 (例如,HTML 編輯器只應顯示 HTML 資料。如果合適,則您的編輯器處理站應該為資料提供第二個檢視。 如果 punkDocDataExisting 參數不是 NULL,則可能是文件資料物件已在另一個編輯器中開啟,或更有可能的是,文件資料已在具有相同編輯器的不同視圖中開啟。 如果文件資料是在編輯器處理站不支援的不同編輯器中開啟,則 Visual Studio 無法開啟編輯器處理站。 如需詳細資訊,請參閱 如何:將檢視附加至文件資料。