Текстовые окна и панели окон

Оценить
(0 голоса)

Текстовые окна имеют свою специфическую объектную абстракцию (в дополнение к той, что имеет обобщенный объект Window): для представления окон текстового редактора ис­пользуется объект TextWindow. Для получения ссылки на объект TextWindow данного окна вы находите значение объекта Window и присваиваете его типу TextWindow:

Dim textWindow As TextWindow textWindow = DTE.ActiveWindow.Object

Объект TextWindow не предоставляет какой-либо особенной функциональности по сравне­нию с типом Window; его реальная ценность состоит в доступе, который он обеспечивает к панелям окна.

Окно текстового редактора в Visual Studio можно разбить на две панели; для создания в ок­не открытого текстового редактора новой панели просто выберите пункт Split в меню Window. Свойство TextWindow. Act ivePane возвращает объект Text Рапе, который пред­ставляет текущую активную панель окна, а свойство TextWindow. Panes предоставляет до­ступ ко всем панелям внутри текстового окна:

' Получить экземпляр панели из коллекции

Dim newPane As TextPane2

newPane = textWindow.Panes.Itern(1)

' Получить текущую активную панель Dim currPane As TextPane2 currPane = textWindow.ActivePane

Самое полезное, что можно сделать при помощи объекта Text Рапе — это прокрутить кли­ентскую область панели (например, видимую часть документа внутри панели) для того, что­бы увидеть нужный фрагмент текста. Это делается при помощи метода TextPane. TryToShow. Вот определение этого метода:

Function TryToShow(Point As TextPoint, Optional How As vsPaneShowHow, _

PointOrCount As Object)

Параметр TextPoint представляет собой конкретное место в текстовом документе, кото­рое вы хотите сделать видимым в текстовой панели (мы подробно обсудим объекты TextPoint в разд. "Редактирование текстовых документов" далее в этой главе). Значе­ние vsPaneShowHow указывает, как панель должна себя вести при прокрутке до указанно­го места:

□    vsPaneShowHow. vsPaneShowCentered приводит к тому, что текст (или выделенный фрагмент текста) центрируется в середине панели (по горизонтали и вертикали);

□    vsPaneShowHow.vsPaneShowTop размещает текст на самом верху видимой области панели;

□    vsPaneShowHow. vsPaneShowAsis показывает текст как есть — без изменения его рас­положения по горизонтали или по вертикали видимой области панели.

Последний параметр (объект PointOrCount) используется для того, чтобы указать конец текстового фрагмента, который вы хотите показать. Если вы зададите здесь целое число, то это будет означать количество символов от начальной точки текста; если вы зададите еще одну точку текста, то выделенным фрагментом будет считаться текст, который находится между этими двумя точками текста.

Объект TextPane используется также и для доступа к функции Incremental Search (ин­крементальный поиск) для панели окна. В листинге 11.3 показан пример этой функции в действии.

Imports EnvDTE Imports EnvDTE8О

Imports Microsoft.VisualStudio.CommandBars Imports System.Diagnostics Imports System. Windows. Forms

Public Module MacroExamples

Public Sub IncrementalSearch ().

' Получить ссылки на активное окно;

' в этом примере мы подразумеваем, что это текстовое окно.

Dim window As Window2 = DTE.ActiveWindow

' Получить экземпляр TextWindow, который соответствует ' нашему текущему окну

Dim txtWindow As TextWindow = window.Object

' Получить активную панель текстового окна Dim pane As TextPane2 = txtWindow.ActivePane

i

' Используя активную панель, получить объект IncrementalSearch для панели Dim search As IncrementalSearch = pane.IncrementalSearch

' Попытаемся найти наш интерфейс IMessageMapper ' при помощи поиска строки "IM".

' Настроить поиск:

' - поиск по документу вперед;

' - соединить символы, которые мы ищем;

' - закончить поиск.

search.StartForward()

search.AppendCharAndSearch(AscW("I"))

search.AppendCharAndSearch(AscW("M"))

' Для выхода из режима инкрементального поиска

' мы можем вызвать IncrementalSearch.Exit()...

' search.Exit()

End Sub End Module

Подробнее в этой категории: « Visual Studio создана расширяемой
Visual Studio создана расширяемой
Обзор объектной модели расширяемости
Версии объектной модели
Категории расширяемости
Корневой объект DTEIDTE2

Добавить комментарий


Защитный код
Обновить

© 2017 www.visualstudios.ru. Все права защищены.