Freigeben über


Unterstützen mehrerer Dokumentansichten

Sie können mehrere Ansichten eines Dokuments bereitstellen, indem Sie separate Dokumentdaten und Dokumentansichtsobjekte für Den Editor erstellen. 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 über ein Fenster im Editor verfügt, ein neues Fenster öffnen kann, indem er im Menü "Fenster" den Befehl "Neues Fenster" auswählt.

  • Unterstützung für Formular- und Codeansicht: Sie möchten, dass Ihr Editor Ansichten verschiedener Typen 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 im benutzerdefinierten Editorprojekt, das von der Visual Studio-Paketvorlage erstellt wurde. Weitere Informationen zu diesem Projekt finden Sie unter Walkthrough: Creating a Custom Editor.

Synchronisieren von Ansichten

Wenn Sie mehrere Ansichten implementieren, ist das Dokumentdatenobjekt dafür verantwortlich, alle Ansichten mit den Daten synchronisiert zu halten. Sie können die Ereignisbehandlungsschnittstellen VsTextBuffer verwenden, um mehrere Ansichten mit den Daten zu synchronisieren.

Wenn Sie das VsTextBuffer Objekt nicht verwenden, um mehrere Ansichten zu synchronisieren, müssen Sie Ihr eigenes Ereignissystem implementieren, um Änderungen zu behandeln, die am Dokumentdatenobjekt vorgenommen wurden. Sie können verschiedene Granularitätsebenen verwenden, um mehrere Ansichten auf dem neuesten Stand zu halten. Bei einer Einstellung der maximalen Granularität werden die anderen Ansichten während der Eingabe sofort aktualisiert. Bei minimaler Granularität werden andere Ansichten erst aktualisiert, wenn sie aktiviert werden.

Bestimmen, ob Dokumentdaten bereits geöffnet sind

Die ausgeführte Dokumenttabelle (RDT) in der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) hilft, nachzuverfolgen, ob die Daten für ein Dokument bereits geöffnet sind, wie im folgenden Diagramm dargestellt.

DocDataView-Grafik

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 aktivieren, überprüft Visual Studio das RDT, um festzustellen, ob das betreffende Dokument bereits in einem Editor geöffnet ist. Wenn die IDE aufruft CreateEditorInstance , um den Editor zu erstellen, gibt ein im punkDocDataExisting Parameter zurückgegebener Wert ungleich NULL an, dass das Dokument bereits in einem anderen Editor geöffnet ist. Weitere Informationen dazu, wie die RDT-Funktionen funktionieren, finden Sie unter "Running Document Table".

Überprüfen Sie in Ihrer IVsEditorFactory Implementierung das zurückgegebene punkDocDataExisting Dokumentdatenobjekt, um zu bestimmen, ob die Dokumentdaten für Den Editor geeignet sind. (Beispielsweise sollten nur HTML-Daten von einem HTML-Editor angezeigt werden.) Falls dies sinnvoll ist, sollte Die Editor-Factory eine zweite Ansicht für die Daten bereitstellen. Wenn der punkDocDataExisting Parameter nicht NULLvorhanden ist, ist es möglich, dass das Dokumentdatenobjekt in einem anderen Editor geöffnet ist, oder, wahrscheinlicher, 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 Der Editor-Factory nicht unterstützt wird, kann Visual Studio die Editorfactory nicht öffnen. Weitere Informationen finden Sie unter So fügen Sie Ansichten zu Dokumentdaten hinzu.