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.
Przykład kontenera tekstowego z obiektami osadzonymi tabel, obrazów i hiperłączy
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.
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.
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.Wynikowy zakres jest przesuwany do tyłu DocumentRange na początku żądanej TextUnit granicy.
Zakres jest przesuwany do przodu lub do tyłu DocumentRange przez żądaną liczbę TextUnit granic.
Zakres jest następnie rozszerzany z zdegenerowanego stanu zakresu przez przeniesienie End punktu końcowego przez jedną żądaną TextUnit granicę.
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
Hiperlink
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.com wartość . |
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 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 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} 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 |
---|---|
X | |
Y | |
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 . |
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ż
- TextPattern
- TextPatternRange
- ITextProvider
- ITextRangeProvider
- Uzyskiwanie dostępu do obiektów osadzonych przy użyciu automatyzacji interfejsu użytkownika
- Udostępnianie zawartości tabel za pomocą automatyzacji interfejsu użytkownika
- Przenoszenie tekstu przy użyciu automatyzacji interfejsu użytkownika
- TextPattern Search and Selection Sample