Поделиться через


Поддержка нескольких представления документа

Можно предоставить более чем одно представление документа, создав отдельные объекты представления данных документа и документ для редактора. Некоторые случаи, в которых дополнительное представление документа было бы полезно:

  • Поддержка нового окна: Требуется редактор обеспечить несколько представлений одного типа, так что пользователь, который уже имеет окно открыть в редакторе мог открыть новое окно, выбрав Новое окно команда из Окно меню.

  • Поддержка представление формы и кода: Необходимо предоставить пользовательский редактор представления различных типов. Visual Basic, например, предоставляет представление формы и представление кода.

Дополнительные сведения об этом см. в разделе процедуру CreateEditorInstance в файле EditorFactory.cs в проекте специализированного редактора созданного шаблоном пакета Visual Studio. Дополнительные сведения об этом проекте см. в разделе Пошаговое руководство: Создание специализированного редактора.

Синхронизировать представления

При реализации нескольких представлений, объект данных документа отвечает за сохранить все представления синхронизирована с данными. Можно использовать интерфейсы обработки событий on VsTextBuffer синхронизировать несколько раз с данными представления.

Если не используется VsTextBuffer объект для представления нескольких синхронизировать, затем необходимо реализовать собственную систему событий для обработки изменения, внесенные в объект данных документа. Можно использовать различные уровни гранулярности для хранения нескольких представлений последним. С помощью параметра максимальной степени гранулярности, при вводе в одно представление другие представления обновляются немедленно. С минимальным уровнем детализации других представлений не обновляются до тех пор, пока они не активированы.

Определение, является ли данные уже открытого документа

Запуск таблица document (RDT) в справках интегрированной среды разработки (ide), отслеживается ли данные для документа уже открыт, как показано на следующей диаграмме.

Несколько представлений

График DocDataView

По умолчанию каждое представление (объект представления документа) содержится в его границах окна (IVsWindowFrame). Как уже определено, однако данные документа может отображаться в нескольких представлений. Чтобы разрешить это Visual Studio проверяет RDT, чтобы определить, является ли документ в вопросе уже открыт в редакторе. При вызове интегрированной среды разработки CreateEditorInstance чтобы создать значение, отличное от null, возвращенных в редакторе punkDocDataExisting параметр указывает на то, что документ уже открыт в другом редакторе. Дополнительные сведения о функциях см. в разделе RDT таблица запущенных документов.

в вашем IVsEditorFactory реализация просмотрите возвращенный объект данных внутри документа punkDocDataExisting определить, является ли данные документа подходят для редактора. (Например, HTML только данные должны отображаться редактором HTML.) Если соответствующее, фабрика редактора должен предоставить второе представление данных. Если punkDocDataExisting параметр отсутствует NULLвозможно, что объект данных документа открыт в другом редакторе или более правоподобном, что данные документа уже открыт в другом представлении с теми же редактор. Если данные документа, открытого в другом редакторе, в фабрику редактора не поддерживает, а затем Visual Studio не удается открыть в фабрику редактора. Дополнительные сведения см. в разделе Практическое руководство. Представления подключения к данным документа.