Udostępnij za pośrednictwem


TextPattern i obiekty osadzone — omówienie

Uwaga

Ta dokumentacja jest przeznaczona dla deweloperów programu .NET Framework, którzy chcą używać zarządzanych klas automatyzacja interfejsu użytkownika zdefiniowanych w System.Windows.Automation przestrzeni nazw. Aby uzyskać najnowsze informacje na temat automatyzacja interfejsu użytkownika, zobacz Interfejs API usługi Windows Automation: automatyzacja interfejsu użytkownika.

W tym omówieniu opisano, jak firma Microsoft automatyzacja interfejsu użytkownika uwidacznia obiekty osadzone lub elementy podrzędne w dokumencie tekstowym lub kontenerze.

W automatyzacja interfejsu użytkownika obiekt osadzony jest dowolnym elementem, który ma granice nietekstowe, na przykład obraz, hiperlink, tabelę lub typ dokumentu, taki jak arkusz kalkulacyjny programu Microsoft Excel lub plik Microsoft Windows Media. Różni się to od standardowej definicji, w której element jest tworzony w jednej aplikacji i osadzony lub połączony w innym. To, czy obiekt można edytować w oryginalnej aplikacji, nie ma znaczenia w kontekście automatyzacja interfejsu użytkownika.

Obiekty osadzone i drzewo automatyzacja interfejsu użytkownika

Obiekty osadzone są traktowane jako poszczególne elementy w widoku sterowania drzewa automatyzacja interfejsu użytkownika. Są one widoczne jako elementy podrzędne kontenera tekstu, aby można było uzyskać do nich dostęp za pośrednictwem tego samego modelu, co inne kontrolki w automatyzacja interfejsu użytkownika.

Osadzona tabela z obrazem w kontenerze tekstowym Przykład kontenera tekstowego z obiektami osadzonymi tabel, obrazów i hiperłączy

Widok zawartości dla poprzedniego przykładu Przykład widoku zawartości dla części poprzedniego kontenera tekstu

Uwidaczniaj obiekty osadzone przy użyciu textPattern i TextPatternRange

Używany w połączeniu, TextPattern klasa wzorca kontrolki i TextPatternRange klasa uwidacznia metody i właściwości, które ułatwiają nawigację i wykonywanie zapytań o obiekty osadzone.

Zawartość tekstowa (lub tekst wewnętrzny) kontenera tekstowego i osadzonego obiektu, takiego jak hiperlink lub komórka tabeli, jest widoczna jako pojedynczy, ciągły strumień tekstowy zarówno w widoku kontrolki, jak i w widoku zawartości drzewa automatyzacja interfejsu użytkownika; granice obiektów są ignorowane. Jeśli klient automatyzacja interfejsu użytkownika pobiera tekst w celu recytowania, interpretowania lub analizowania w jakiś sposób, zakres tekstu powinien być sprawdzany pod kątem specjalnych przypadków, takich jak tabela z zawartością tekstową lub innymi obiektami osadzonymi. Można to osiągnąć przez wywołanie GetChildren metody w celu uzyskania obiektu dla każdego osadzonego obiektu, a następnie wywołanie metody RangeFromChild w celu uzyskania AutomationElement zakresu tekstu dla każdego elementu. Odbywa się to rekursywnie do momentu pobrania całej zawartości tekstowej.

Zakresy tekstu mieszczące się w obiektach osadzonych. Przykład strumienia tekstowego z osadzonymi obiektami i ich zakresami

Gdy konieczne jest przechodzenie przez zawartość zakresu tekstu, w celu pomyślnego Move wykonania metody należy wykonać serię kroków w tle.

  1. Zakres tekstu jest znormalizowany; oznacza to, że zakres tekstu jest zwinięty do zgenerowanego zakresu w Start punkcie końcowym, co sprawia, że End punkt końcowy jest zbędny. Ten krok jest niezbędny do usunięcia niejednoznaczności w sytuacjach, w których zakres tekstu obejmuje TextUnit granice: na przykład gdzie {The URL https://www.microsoft.com is embedded in text "{" i "}" są punktami końcowymi zakresu tekstu.

  2. Wynikowy zakres jest przesuwany do tyłu DocumentRange na początku żądanej TextUnit granicy.

  3. Zakres jest przesuwany do przodu lub do tyłu DocumentRange przez żądaną liczbę TextUnit granic.

  4. Zakres jest następnie rozszerzany z zdegenerowanego stanu zakresu przez przeniesienie End punktu końcowego przez jedną żądaną TextUnit granicę.

Korekty zakresu według move &ExpandToEnclosingUnit Przykłady dostosowania zakresu tekstu dla funkcji Move() i ExpandToEnclosingUnit()

Typowe scenariusze

W poniższych sekcjach przedstawiono przykłady najbardziej typowych scenariuszy obejmujących obiekty osadzone.

Legenda przykładów pokazanych:

{ = Start

} = End

Przykład 1 — zakres tekstu zawierający osadzony hiperlink tekstu

{The URL https://www.microsoft.com is embedded in text}.

Metoda o nazwie Result
GetText Zwraca ciąg The URL https://www.microsoft.com is embedded in text.
GetEnclosingElement Zwraca najbardziej AutomationElement wewnętrzny zakres tekstu. W tym przypadku AutomationElement element reprezentuje samego dostawcę tekstu.
GetChildren Zwraca kontrolkę reprezentującą AutomationElement kontrolkę hiperłącza.
RangeFromChild gdzie AutomationElement jest obiekt zwracany przez poprzednią GetChildren metodę. Zwraca zakres reprezentujący https://www.microsoft.comwartość .

Przykład 2 — zakres tekstu, który częściowo obejmuje osadzone hiperłącze tekstowe

Adres URL https://{[www]} jest osadzony w tekście.

Metoda o nazwie Result
GetText Zwraca ciąg "www".
GetEnclosingElement Zwraca najbardziej AutomationElement wewnętrzny zakres tekstu. W tym przypadku kontrolka hiperłącza.
GetChildren Zwraca wartość null , ponieważ zakres tekstu nie obejmuje całego ciągu adresu URL.

Przykład 3 — zakres tekstu, który częściowo obejmuje zawartość kontenera tekstu. Kontener tekstu ma osadzony hiperlink tekstowy, który nie jest częścią zakresu tekstu.

{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.

Metoda o nazwie Result
GetText Zwraca ciąg "Adres URL".
GetEnclosingElement Zwraca najbardziej AutomationElement wewnętrzny zakres tekstu. W tym przypadku AutomationElement element reprezentuje samego dostawcę tekstu.
Move z parametrami (TextUnit.Word, 1). Przenosi zakres tekstu na "http", ponieważ tekst hiperłącza składa się z pojedynczych wyrazów. W takim przypadku hiperlink nie jest traktowany jako pojedynczy obiekt.

Adres URL {[http]} jest osadzony w tekście.

Obraz

Przykład 1 — zakres tekstu zawierający osadzony obraz

{Obraz Przykład obrazu osadzonego jest osadzony w tekście}.

Metoda o nazwie Result
GetText Zwraca ciąg "The is embedded in text". Nie można oczekiwać, że dowolny tekst ALT skojarzony z obrazem zostanie uwzględniony w strumieniu tekstowym.
GetEnclosingElement Zwraca najbardziej AutomationElement wewnętrzny zakres tekstu. W tym przypadku AutomationElement element reprezentuje samego dostawcę tekstu.
GetChildren Zwraca kontrolkę obrazu reprezentującą AutomationElement .
RangeFromChild gdzie AutomationElement jest obiekt zwracany przez poprzednią GetChildren metodę. Zwraca zgenerujny zakres reprezentujący wartość "Przykład obrazu osadzonego".

Przykład 2 — zakres tekstu, który częściowo obejmuje zawartość kontenera tekstu. Kontener tekstu ma osadzony obraz, który nie jest częścią zakresu tekstu.

{Obraz} Przykład obrazu osadzonego jest osadzony w tekście.

Metoda o nazwie Result
GetText Zwraca ciąg "Obraz".
GetEnclosingElement Zwraca najbardziej AutomationElement wewnętrzny zakres tekstu. W tym przypadku AutomationElement element reprezentuje samego dostawcę tekstu.
Move z parametrami (TextUnit.Word, 1). Przenosi zakres tekstu na "is". Ponieważ tylko obiekty osadzone oparte na tekście są traktowane jako część strumienia tekstowego, obraz w tym przykładzie nie ma wpływu na wartość Move lub jego zwracaną (1 w tym przypadku).

Table

Tabela używana na potrzeby przykładów

Komórka z obrazem Komórka z tekstem
Przykład obrazu osadzonego X
Przykład obrazu osadzonego 2 Y
Przykład obrazu osadzonego 3

Obraz dla Z
Z

Przykład 1 — pobieranie kontenera tekstu z zawartości komórki.

Wywoływana metoda Result
GetItem z parametrami (0,0) Zwraca reprezentację AutomationElement zawartości komórki tabeli. W tym przypadku element jest kontrolką tekstową.
RangeFromChild gdzie AutomationElement jest obiekt zwracany przez poprzednią GetItem metodę. Zwraca zakres obejmujący obraz Przykład obrazu osadzonego.
GetEnclosingElement dla obiektu zwróconego przez poprzednią RangeFromChild metodę. Zwraca reprezentującą AutomationElement komórkę tabeli. W tym przypadku element jest kontrolką tekstową, która obsługuje element TableItemPattern.
GetEnclosingElement dla obiektu zwróconego przez poprzednią GetEnclosingElement metodę. Zwraca tabelę AutomationElement reprezentującą.
GetEnclosingElement dla obiektu zwróconego przez poprzednią GetEnclosingElement metodę. Zwraca wartość AutomationElement reprezentującą samego dostawcę tekstu.

Przykład 2 — pobieranie zawartości tekstowej komórki.

Wywoływana metoda Result
GetItem z parametrami (1,1). Zwraca reprezentację AutomationElement zawartości komórki tabeli. W tym przypadku element jest kontrolką tekstową.
RangeFromChild gdzie AutomationElement jest obiekt zwracany przez poprzednią GetItem metodę. Zwraca wartość "Y".

Zobacz też