Unterstützen mehrerer Dokumentansichten
Sie können durch Erstellen separater Dokumentdaten- und Dokumentansichtsobjekte für Ihren Editor mehr als eine Ansicht eines Dokuments bereitstellen. Einige Fälle, in denen eine zusätzliche Dokumentansicht nützlich wäre, sind:
Unterstützung für neue Fenster: Sie möchten, dass der Editor zwei oder mehr Ansichten desselben Typs bereitstellt, damit ein Benutzer, der bereits ein Fenster im Editor geöffnet hat, durch Auswählen des Befehls Neues Fenster im Menü Fenster ein neues Fenster öffnen kann.
Unterstützung für Formular- und Codeansicht: Sie möchten, dass Ihr Editor Ansichten unterschiedlichen Typs bereitstellt. Visual Basic stellt z. B. sowohl eine Formularansicht als auch eine Codeansicht bereit.
Weitere Informationen hierzu finden Sie im CreateEditorInstance-Verfahren in der Datei EditorFactory.cs in dem von der Visual Studio-Paketvorlage erstellten benutzerdefinierten Editorprojekt. Weitere Informationen zu diesem Projekt finden Sie unter Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Editors.
Synchronisieren von Ansichten
Wenn Sie mehrere Ansichten implementieren, ist das Dokumentdatenobjekt für die Synchronisierung aller Ansichten mit den Daten zuständig. Zum Synchronisieren mehrere Ansichten mit den Daten können Sie die Ereignisbehandlungsschnittstellen in VsTextBuffer verwenden.
Wenn Sie das Objekt VsTextBuffer nicht zum Synchronisieren mehrerer Ansichten verwenden, müssen Sie Ihr eigenes Ereignissystem zum Behandeln der am Dokumentdatenobjekt vorgenommenen Änderungen implementieren. Sie können verschiedene Granularitätsebenen verwenden, um mehrere Ansichten auf dem neuesten Stand zu halten. Bei Einstellung auf maximale Granularität werden bei der Eingabe in einer Ansicht die anderen Ansichten sofort aktualisiert. Bei minimaler Granularität werden die anderen Ansichten erst aktualisiert, wenn sie aktiviert werden.
Bestimmen, ob Dokumentdaten bereits geöffnet sind
Mithilfe der aktiven Dokumenttabelle (RDT) in der integrierten Entwicklungsumgebung (IDE) lässt sich nachverfolgen, ob die Daten für ein Dokument bereits geöffnet sind, wie im folgenden Diagramm dargestellt.
Mehrere Ansichten
Standardmäßig ist jede Ansicht (Dokumentansichtsobjekt) in einem eigenen Fensterrahmen (IVsWindowFrame) enthalten. Wie bereits erwähnt, können Dokumentdaten jedoch in mehreren Ansichten angezeigt werden. Um dies zu ermöglichen, überprüft Visual Studio in der RDT, ob das betreffende Dokument bereits in einem Editor geöffnet ist. Wenn die IDE zum Erstellen des Editors CreateEditorInstance aufruft, zeigt ein im Parameter punkDocDataExisting
zurückgegebener Wert ungleich NULL an, dass das Dokument bereits in einem anderen Editor geöffnet ist. Weitere Informationen zur Funktionsweise der RDT finden Sie unter Aktive Dokumenttabelle.
Überprüfen Sie in Ihrer IVsEditorFactory-Implementierung das in punkDocDataExisting
zurückgegebene Dokumentdatenobjekt, um zu bestimmen, ob die Dokumentdaten für Ihren Editor geeignet sind. (Beispielsweise sollten von einem HTML-Editor nur HTML-Daten angezeigt werden.) Wenn sie geeignet sind, sollte Ihre Editorfactory eine zweite Ansicht für die Daten bereitstellen. Wenn der Parameter punkDocDataExisting
nicht NULL
ist, könnte es sein, dass entweder das Dokumentdatenobjekt in einem anderen Editor geöffnet ist oder, was wahrscheinlicher ist, dass die Dokumentdaten bereits in einer anderen Ansicht mit demselben Editor geöffnet sind. Wenn die Dokumentdaten in einem anderen Editor geöffnet sind, der von Ihrer Editorfactory nicht unterstützt wird, kann Visual Studio Ihre Editorfactory nicht öffnen. Weitere Informationen finden Sie unter Gewusst wie: Anfügen von Ansichten zu Dokumentdaten.