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


Сведения о шаблонах элементов управления Text и TextRange

Текстовое содержимое элемента управления предоставляется с помощью шаблона элемента управления Text, который представляет содержимое текстового контейнера в виде текстового потока. Шаблон элемента управления Text требует поддержки шаблона элемента управления TextRange для предоставления атрибутов формата и стиля. Шаблон элемента управления TextRange поддерживает шаблон управления Text, представляя смежные или несколько разрозненных фрагментов текста (или диапазонов) в текстовом контейнере с коллекцией начальных и конечных точек. Шаблон элемента управления TextRange поддерживает такие функции, как выбор, сравнение, извлечение и обход.

Заметка

Шаблон элемента управления текста не предоставляет возможности для вставки или изменения текста. Однако в зависимости от элемента управления это можно сделать с помощью шаблона элемента управления "Автоматизация пользовательского интерфейса Майкрософт" значение или с помощью прямого ввода клавиатуры. Существует также шаблон TextEdit, который поддерживает программное изменение текста.

 

Функциональные возможности, описанные в этом разделе, жизненно важны для вспомогательных поставщиков технологий и их конечных пользователей. Вспомогательные технологии могут использовать автоматизацию пользовательского интерфейса для сбора полных сведений о форматировании текста для пользователя и предоставления программной навигации и выделения текста с помощью TextUnit (символ, слово, строка или абзац).

В этом разделе содержатся следующие разделы:

TextPattern службы автоматизации пользовательского интерфейса и платформа текстовых служб

Text Services Framework (TSF) — это простая и масштабируемая системная платформа, которая позволяет службам естественного языка и расширенному вводу текста на рабочем столе и в приложениях. Помимо предоставления интерфейсов для приложений для предоставления их текстового хранилища, он также поддерживает метаданные для текстового хранилища.

TSF предназначен для приложений, которые должны внедрять входные данные в сценарии с учетом контекста. Шаблон управления текстом , однако, это решение с доступом только для чтения, которое предназначено для обеспечения оптимизированного доступа к текстовому хранилищу данных для устройств чтения с экрана и Брайля.

Доступные технологии, требующие доступа только для чтения к текстовому хранилищу, могут использовать шаблон элемента управления "Текст", но потребуется функциональность TSF для ввода с учетом контекста.

Дополнительные сведения см. в разделе Text Services Framework.

Типы элементов управления

Тип элемента управления "Редактирование " и тип элемента управления "Документ " в автоматизации пользовательского интерфейса должны поддерживать шаблон управления "Текст ". Для улучшения специальных возможностей корпорация Майкрософт рекомендует использовать типы элементов управления и Text, но не требуются.

Интерфейсы поставщика

Поставщики автоматизации пользовательского интерфейса поддерживают шаблон управления Text, реализуя интерфейсы ITextProvider и ITextRangeProvider. Эти интерфейсы предоставляют подробные сведения о атрибутах для текста в элементе управления и предоставляют надежные возможности навигации.

Поставщику не нужно поддерживать все текстовые атрибуты, если элемент управления не поддерживает какой-либо конкретный атрибут.

Поставщик должен поддерживать методы ITextProvider::GetSelection и ITextRangeProvider::Select, если элемент управления поддерживает выделение текста или размещение текстового курсора (или системного курсора) в текстовой области. Если элемент управления не поддерживает эту функцию, он не должен поддерживать один из этих методов. Однако элемент управления должен предоставлять тип выделенного текста, который он поддерживает, путем реализации свойства ITextProvider::SupportedTextSelection.

Поставщик всегда должен поддерживать константы TextUnit, TextUnit_Character и TextUnit_Document, а также любые другие, которые он может поддерживать.

Заметка

Поставщик может пропустить поддержку определенной TextUnit, перейдя к следующей по величине поддерживаемой единице в следующем порядке: TextUnit_Character, TextUnit_Format, TextUnit_Word, TextUnit_Line, TextUnit_Paragraph, TextUnit_Pageи TextUnit_Document.

 

Клиентские интерфейсы

Клиентские приложения службы автоматизации пользовательского интерфейса используют интерфейсы IUIAutomationTextPattern и IUIAutomationTextRange для доступа к текстовому содержимому элемента управления. Клиенты используют IUIAutomationTextPattern для выбора текстовых диапазонов, называемых текстовыми диапазонами, а также для получения указателей на интерфейсы IUIAutomationTextRange для этих диапазонов. Интерфейс IUIAutomationTextRange позволяет клиентам управлять текстовым диапазоном и получать сведения о тексте в диапазоне, включая атрибуты, такие как имя шрифта, цвет переднего плана, стиль подчеркивания и т. д. Дополнительные сведения см. в разделе Идентификаторы текстовых атрибутов.

Производительность

Шаблон управления text использует межпроцессные вызовы для большинства функций, поэтому он не предоставляет механизм кэширования для повышения производительности при обработке содержимого. К другим шаблонам элементов управления в службе автоматизации пользовательского интерфейса Майкрософт можно получить доступ с помощью метода IUIAutomationElement::GetCachedPattern.

Одним из способов повышения производительности является обеспечение того, чтобы клиенты автоматизации пользовательского интерфейса пытались получить умеренно размерные блоки текста с помощью метода IUIAutomationTextRange::GetText. Например, использование GetText для извлечения отдельных символов приведет к перекрестным обращениям при каждом символе, в то время как при вызове GetText без указания максимальной длины возникает одно перекрестное обращение, которое может иметь высокую задержку в зависимости от размера текстового диапазона.

Текстовый шаблон и виртуализированные внедренные объекты

По возможности, реализация поставщика ITextProvider и ITextRangeProvider должна поддерживать весь текст документа, включая текст за пределами видимой области. Для внеэкранного текста или внедренных объектов, которые виртуализированы, поставщики должны поддерживать шаблон управления VirtualizedItem (IVirtualizedItemProvider).

Если документ виртуализирован до тех пор, пока весь текстовый поток все еще доступен, атрибут ITextProvider::DocumentRange предоставит текстовый диапазон, содержащий весь документ. Однако вызов метода ITextRangeProvider получит коллекцию виртуализированных объектов, представляющих все внедренные объекты в документе. Чтобы взаимодействовать с виртуализированным внедренным объектом, клиенты должны вызывать метод IVirtualizedItemProvider::Realize, что делает элементы полностью доступными в качестве элементов автоматизации пользовательского интерфейса. Клиенты должны следовать аналогичному процессу, чтобы работать с элементами сетки в внедренной таблице, где часть таблицы находится вне экрана и виртуализирована.

Использование типа пользовательского управления с текстовым шаблоном элемента управления

Хотя шаблон элемента управления Text поддерживает множество текстовых атрибутов и внедренных объектов, невозможно заранее определить все возможные элементы документа и типы презентаций. Для элементов документа, которые не поддерживаются существующими атрибутами или стандартными типами элементов управления, поставщики могут использовать возможности расширения, предоставляемые типом элемента управления UI Automation "Пользовательский".

Для приложений и пользовательских интерфейсов, основанных на представлении страниц, границы и оформление страницы можно выразить как вложенный объект с пользовательским типом управления (то есть LocalizedControlType="page"). Таким образом, внедренный объект может размещать другие элементы страницы, которые не могут легко быть частью текстового потока документа, например поля верхнего и нижнего колонтитулов каждой страницы, как дочерние элементы внедренного объекта "page". Кроме того, каждый объект "page" может независимо поддерживать шаблон элемента управления Text, который хорошо подходит для приложений, таких как инструменты для создания презентаций слайд-шоу или страничных настольных издательских систем.

Время существования текстового диапазона

По возможности поставщик должен убедиться, что любые изменения текста, такие как удаления, вставки и перемещения, отражаются в связанном текстовом диапазоне. Если обновление текстового диапазона невозможно, поставщик должен вызвать событие UIA_Text_TextChangedEventId, чтобы уведомить клиентов о том, что текстовый диапазон больше не действителен, а новый должен быть получен.

концептуальные

Как автоматизация пользовательского интерфейса поддерживает внедренные объекты

Обзор шаблонов управления автоматизацией пользовательского интерфейса

поддержка автоматизации пользовательского интерфейса для текстового содержимого

Работа с текстовыми управляющими элементами

другие ресурсы

Текстовая служба Framework