Condividi tramite


Supporto di più visualizzazioni documento

È possibile fornire più visualizzazioni di un documento creando oggetti di visualizzazione documento e dati documento separati per l'editor. Alcuni casi in cui sarebbe utile una visualizzazione documento aggiuntiva sono:

  • Supporto di una nuova finestra: si vuole che l'editor fornisca due o più visualizzazioni dello stesso tipo, in modo che un utente che abbia già una finestra aperta nell'editor possa aprire una nuova finestra selezionando il comando Nuova finestra dal menu Finestra .

  • Supporto della visualizzazione modulo e codice: si vuole che l'editor fornisca visualizzazioni di tipi diversi. Visual Basic, ad esempio, fornisce sia una visualizzazione maschera che una visualizzazione codice.

    Per altre informazioni, vedere la procedura CreateEditorInstance nel file EditorFactory.cs nel progetto dell'editor personalizzato creato dal modello di pacchetto di Visual Studio. Per altre informazioni su questo progetto, vedere Procedura dettagliata: Creazione di un editor personalizzato.

Sincronizzazione delle viste

Quando si implementano più visualizzazioni, l'oggetto dati del documento è responsabile della sincronizzazione di tutte le visualizzazioni con i dati. È possibile usare le interfacce di gestione degli eventi in VsTextBuffer per sincronizzare più visualizzazioni con i dati.

Se non si utilizza l'oggetto VsTextBuffer per sincronizzare più visualizzazioni, è necessario implementare il proprio sistema eventi per gestire le modifiche apportate all'oggetto dati del documento. È possibile usare diversi livelli di granularità per mantenere aggiornate più visualizzazioni. Con un'impostazione di granularità massima, quando si digita in una visualizzazione le altre visualizzazioni vengono aggiornate immediatamente. Con la granularità minima, le altre visualizzazioni non vengono aggiornate fino a quando non vengono attivate.

Determinare se i dati del documento sono già aperti

La tabella dei documenti in esecuzione (RDT) nell'ambiente di sviluppo integrato (IDE) consente di tenere traccia se i dati per un documento sono già aperti, come illustrato nel diagramma seguente.

Elemento grafico DocDataView

Più visualizzazioni

Per impostazione predefinita, ogni visualizzazione (oggetto visualizzazione documento) è contenuta nella cornice della finestra (IVsWindowFrame). Come già indicato, tuttavia, i dati dei documenti possono essere visualizzati in più visualizzazioni. Per abilitare questa operazione, Visual Studio controlla il protocollo RDT per determinare se il documento in questione è già aperto in un editor. Quando l'IDE chiama CreateEditorInstance per creare l'editor, un valore non NULL restituito nel punkDocDataExisting parametro indica che il documento è già aperto in un altro editor. Per altre informazioni sulle funzioni RDT, vedere Running Document Table.For more information about how the RDT functions, see Running Document Table.

IVsEditorFactory Nell'implementazione esaminare l'oggetto dati del documento restituito in punkDocDataExisting per determinare se i dati del documento sono appropriati per l'editor. Ad esempio, solo i dati HTML devono essere visualizzati da un editor HTML. Se appropriato, la factory dell'editor deve fornire una seconda visualizzazione per i dati. Se il punkDocDataExisting parametro non NULLè , è possibile che l'oggetto dati del documento sia aperto in un altro editor o, più probabilmente, che i dati del documento siano già aperti in una visualizzazione diversa con lo stesso editor. Se i dati del documento sono aperti in un editor diverso non supportato dalla factory dell'editor, Visual Studio non riesce ad aprire la factory dell'editor. Per altre informazioni, vedere Procedura: Allegare visualizzazioni ai dati del documento.