Udostępnij za pośrednictwem


Informacje o wzorcach kontrolek Text i TextRange

Zawartość tekstowa kontrolki jest widoczna przy użyciu wzorca kontrolki Text, który reprezentuje zawartość kontenera tekstu jako strumień tekstu. Wzorzec kontrolki Tekst wymaga obsługi wzorca kontrolki TextRange w celu uwidocznienia atrybutów formatu i stylu. Wzorzec kontrolki TextRange obsługuje wzorzec kontrolki Tekst, reprezentując ciągły lub wielokrotny, rozłączny zakres tekstu (lub zakresy) w kontenerze tekstowym z kolekcją punktów końcowych początkowych i końcowych. Wzorzec kontrolki TextRange obsługuje funkcje, takie jak wybór, porównanie, pobieranie i przechodzenie.

Notatka

Wzorzec kontrolki tekst nie zapewnia metody wstawiania ani modyfikowania tekstu. Jednak w zależności od kontrolki można to zrobić przy użyciu Microsoft UI Automation za pomocą wzorca sterowania typu wartość () lub za pomocą bezpośredniego wprowadzania z klawiatury. Istnieje również wzorzec TextEdit, który obsługuje programową zmianę tekstu.

 

Funkcje opisane w tym temacie mają kluczowe znaczenie dla dostawców technologii pomocniczych i ich użytkowników końcowych. Technologie pomocnicze mogą używać automatyzacji interfejsu użytkownika do zbierania pełnych informacji o formatowaniu tekstu dla użytkownika oraz umożliwiania programowej nawigacji i zaznaczania tekstu według TextUnit (znak, wyraz, wiersz lub akapit).

Ten temat zawiera następujące sekcje:

Automatyzacja interfejsu użytkownika w TextPattern i struktura usług tekstowych

Text Services Framework (TSF) to prosta i skalowalna struktura systemu, która umożliwia usługi związane z językiem naturalnym oraz zaawansowane wprowadzanie tekstu na pulpicie i w aplikacjach. Oprócz udostępniania interfejsów dla aplikacji w celu uwidocznienia ich magazynu tekstu, obsługuje również metadane magazynu tekstu.

TSF został zaprojektowany dla aplikacji, które muszą wprowadzać dane wejściowe do scenariuszy obsługujących kontekst. Wzorzec sterowania tekstem jest jednak rozwiązaniem tylko do odczytu, które ma zapewnić zoptymalizowany dostęp do repozytorium tekstu dla czytników ekranu i urządzeń Braille'a.

Dostępne technologie, które potrzebują dostępu tylko do odczytu do repozytorium tekstu, mogą używać wzorca kontrolki Tekst, ale będą potrzebować funkcji TSF na potrzeby wejścia kontekstowego.

Aby uzyskać więcej informacji, zobacz Text Services Framework.

Typy kontrolek

Kontrolka Automatyzacja interfejsu użytkownika Edytowanie i typ kontrolki dokumentów dokumentu musi obsługiwać wzorzec kontrolki tekst. W celu zwiększenia ułatwień dostępu firma Microsoft zaleca, aby Etykietka narzędzia i Typy kontrolek Tekst obsługiwały również wzorzec kontrolki Tekst, ale nie jest to wymagane.

Interfejsy dostawcy

Dostawcy automatyzacji interfejsu użytkownika obsługują wzorzec sterujący Text dla kontrolki, implementując interfejsy ITextProvider i ITextRangeProvider. Te interfejsy udostępniają szczegółowe informacje o atrybutach dla tekstu w kontrolce i zapewniają niezawodne możliwości nawigacji.

Dostawca nie musi obsługiwać wszystkich atrybutów tekstowych, jeśli kontrolka nie obsługuje żadnego określonego atrybutu.

Dostawca musi obsługiwać ITextProvider::GetSelection i ITextRangeProvider::Select metody, jeśli kontrolka obsługuje zaznaczanie tekstu lub umieszczanie kursora tekstu (lub daszka systemowego) w obszarze tekstu. Jeśli kontrolka nie obsługuje tej funkcji, nie musi obsługiwać żadnej z tych metod. Jednak kontrolka musi uwidocznić obsługiwany typ zaznaczenia tekstu przez zaimplementowanie właściwości ITextProvider::SupportedTextSelection.

Dostawca musi zawsze obsługiwać stałe TextUnit, TextUnit_Character i TextUnit_Document, a także inne, które może obsługiwać.

Notatka

Dostawca może pominąć obsługę określonego TextUnit, przechodząc do następnej większej jednostki obsługiwanej w następującej kolejności: TextUnit_Character, TextUnit_Format, TextUnit_Word, TextUnit_Line, TextUnit_Paragraph, TextUnit_Pagei TextUnit_Document.

 

Interfejsy klienta

Aplikacje klienckie automatyzacji interfejsu użytkownika używają interfejsów IUIAutomationTextPattern i interfejsów IUIAutomationTextRange w celu uzyskania dostępu do zawartości tekstowej kontrolki tekstu. Klienci używają IUIAutomationTextPattern do wybierania zakresów tekstu o nazwie zakresów tekstui pobierania wskaźników do interfejsów IUIAutomationTextRang e dla zakresów. Interfejs IUIAutomationTextRange umożliwia klientom manipulowanie zakresem tekstu oraz pobieranie informacji o tekście w zakresie, w tym atrybutów, takich jak nazwa czcionki, kolor pierwszego planu, styl podkreślenia itd. Aby uzyskać więcej informacji, zobacz Text Attribute Identifiers.

Wydajność

Wzorzec sterowania tekstu opiera się na wywołaniach między procesami dla większości jej funkcji, dlatego nie zapewnia mechanizmu buforowania w celu poprawy wydajności podczas przetwarzania zawartości. Dostęp do innych wzorców sterowania w usłudze Microsoft UI Automation można uzyskać przy użyciu metody IUIAutomationElement::GetCachedPattern.

Jedną z technik poprawy wydajności jest upewnienie się, że klienci automatyzacji interfejsu użytkownika próbują pobrać umiarkowanej wielkości bloki tekstu przy użyciu metody IUIAutomationTextRange::GetText. Przykładowo, użycie GetText w celu pobrania pojedynczych znaków spowoduje, że dla każdego znaku wystąpią trafienia między procesami, natomiast wywołanie GetText bez określenia maksymalnej długości spowoduje jedno trafienie między procesami, ale może mieć wysoką latencję w zależności od rozmiaru zakresu tekstu.

Wzorzec tekstu i zwirtualizowane obiekty osadzone

Jeśli to możliwe, implementacja dostawcy ITextProvider i ITextRangeProvider powinna obsługiwać cały tekst dokumentu, w tym tekst znajdujący się poza widokiem. W przypadku zwirtualizowanego tekstu poza ekranem lub zwirtualizowanych obiektów osadzonych dostawcy powinni obsługiwać wzorzec kontrolki VirtualizedItem (IVirtualizedItemProvider).

Jeśli dokument jest zwirtualizowany, podczas gdy cały strumień tekstowy jest nadal dostępny, właściwość ITextProvider::DocumentRange pobierze zakres tekstowy zawierający cały dokument. Jednak wywołanie metody ITextRangeProvider spowoduje pobranie kolekcji zwirtualizowanych obiektów reprezentujących wszystkie obiekty osadzone w dokumencie. Aby wchodzić w interakcje ze zwirtualizowanym obiektem osadzonym, klienci muszą wywołać metodę IVirtualizedItemProvider::Realizuj, która sprawia, że elementy są w pełni dostępne jako elementy Automatyzacji Interfejsu Użytkownika. Klienci muszą postępować zgodnie z podobnym procesem, aby pracować z elementami siatki w osadzonej tabeli, w której część tabeli znajduje się poza ekranem i jest zwirtualizowana.

Używanie niestandardowego typu kontrolki ze wzorcem kontrolki tekstu

Chociaż wzorzec kontrolki tekst obsługuje wiele atrybutów tekstowych i obiektów osadzonych, nie można z wyprzedzeniem zdefiniować wszystkich możliwych elementów dokumentów i typów prezentacji. W przypadku elementów dokumentów, które nie są obsługiwane przez istniejące atrybuty lub standardowe typy kontrolek, dostawcy mogą używać funkcji rozszerzalności udostępnianych przez niestandardowy typ kontrolki automatyzacji interfejsu użytkownika .

W przypadku aplikacji i interfejsów użytkownika, które są oparte na prezentacjach stron, granica i układ prezentacji strony mogą być również wyrażone jako osadzony obiekt, który ma niestandardowy typ kontrolki (czyli LocalizedControlType="page"). W ten sposób osadzony obiekt może obsługiwać inne elementy strony, które nie mogą być łatwo częścią strumienia tekstu dokumentu, takie jak pola nagłówka i stopki każdej strony, jako elementy podrzędne osadzonego obiektu "page". Alternatywnie każdy obiekt "page" może obsługiwać wzorzec sterowania Text niezależnie, co dobrze sprawdza się w przypadku aplikacji, takich jak narzędzia do tworzenia prezentacji slajdowych lub publikacja przy użyciu aplikacji desktopowych.

Okres istnienia zakresu tekstu

Jeśli to możliwe, dostawca powinien upewnić się, że wszelkie zmiany tekstu, takie jak usunięcia, wstawienia i ruchy, są odzwierciedlane w skojarzonym zakresie tekstu. Jeśli aktualizacja zakresu tekstu nie jest możliwa, dostawca powinien zgłosić zdarzenie UIA_Text_TextChangedEventId, aby powiadomić klientów, że zakres tekstu nie jest już prawidłowy i należy pobrać nowy.

koncepcyjne

jak automatyzacja interfejsu użytkownika obsługuje obiekty osadzone

Omówienie wzorców automatyzacji kontrolek interfejsu użytkownika

Obsługa automatyzacji interfejsu użytkownika dla zawartości tekstowej

praca z kontrolkami opartymi na tekście

innych zasobów

Text Services Framework