Delen via


Overzicht van TextPattern en Ingesloten Objecten

Opmerking

Deze documentatie is bedoeld voor .NET Framework-ontwikkelaars die de beheerde UI Automation-klassen willen gebruiken die zijn gedefinieerd in de System.Windows.Automation naamruimte. Zie Windows Automation-API: UI Automationvoor de meest recente informatie over UI Automation.

In dit overzicht wordt beschreven hoe Microsoft UI Automation ingesloten objecten of onderliggende elementen beschikbaar maakt in een tekstdocument of container.

In UI Automation is een ingesloten object elk element met niet-tekstuele grenzen; Bijvoorbeeld een afbeelding, hyperlink, tabel of documenttype, zoals een Microsoft Excel-spreadsheet of Microsoft Windows Media-bestand. Dit verschilt van de standaarddefinitie, waarbij een element wordt gemaakt in één toepassing en ingesloten, of gekoppeld, binnen een andere toepassing. Of het object kan worden bewerkt in de oorspronkelijke toepassing, is niet relevant in de context van UI Automation.

Ingesloten objecten en de automatiseringsstructuur van de gebruikersinterface

Ingesloten objecten worden behandeld als afzonderlijke elementen in de besturingsweergave van de UI Automation-structuur. Ze worden weergegeven als onderliggende elementen van de tekstcontainer, zodat ze toegankelijk zijn via hetzelfde model als andere besturingselementen in UI Automation.

Ingesloten tabel met afbeelding in een tekstcontainer Voorbeeld van een tekstcontainer met ingesloten tabel-, afbeeldings- en hyperlinkobjecten

Inhoudsweergave voor het voorgaande voorbeeld Voorbeeld van de inhoudsweergave voor een gedeelte van de voorgaande tekstcontainer

Ingesloten objecten beschikbaar maken met TextPattern en TextPatternRange

Wordt in combinatie gebruikt, de TextPattern besturingspatroonklasse en de TextPatternRange klasse maken methoden en eigenschappen beschikbaar die navigatie en query's op ingesloten objecten mogelijk maken.

De tekstuele inhoud (of binnenste tekst) van een tekstcontainer en een ingesloten object, zoals een hyperlink of tabelcel, wordt weergegeven als één doorlopende tekststroom in zowel de besturingsweergave als de inhoudsweergave van de UI Automation-structuur; objectgrenzen worden genegeerd. Als een UI Automation-client de tekst ophaalt om tekst op een bepaalde manier te reciteren, interpreteren of analyseren, moet het tekstbereik worden gecontroleerd op speciale gevallen, zoals een tabel met tekstuele inhoud of andere ingesloten objecten. Dit kan worden bereikt door aan te roepen GetChildren om een AutomationElement voor elk ingesloten object te verkrijgen en vervolgens aan te roepen RangeFromChild om een tekstbereik voor elk element te verkrijgen. Dit wordt recursief gedaan totdat alle tekstuele inhoud is opgehaald.

Tekstbereiken die zijn verspreid door ingesloten objecten. Voorbeeld van een tekststroom met ingesloten objecten en de bijbehorende bereikbereiken

Wanneer het nodig is om de inhoud van een tekstbereik te doorlopen, wordt achter de schermen een reeks stappen uitgevoerd om de Move methode succesvol uit te voeren.

  1. Het tekstbereik wordt genormaliseerd; Dat wil gezegd: het tekstbereik wordt samengevouwen tot een degenererend bereik op het Start eindpunt, waardoor het End eindpunt overbodig wordt. Deze stap is nodig om dubbelzinnigheid te verwijderen in situaties waarin een tekstbereik grenzen omvat TextUnit , bijvoorbeeld {The URL https://www.microsoft.com is embedded in text waarbij {en }de eindpunten van het tekstbereik zijn.

  2. Het resulterende bereik wordt verplaatst achterwaarts in de DocumentRange tot het begin van de aangevraagde TextUnit grens.

  3. Het bereik wordt naar voren of naar achteren verplaatst in DocumentRange met het aangevraagde aantal TextUnit grenzen.

  4. Het bereik wordt vervolgens uitgebreid vanuit een gedegenereerde toestand door het End eindpunt met één aangevraagde TextUnit grens te verplaatsen.

Bereikaanpassingen door Move & ExpandToEnclosingUnit Voorbeelden van hoe een tekstbereik wordt aangepast voor Move() en ExpandToEnclosingUnit()

Veelvoorkomende scenario's

In de volgende secties ziet u voorbeelden van de meest voorkomende scenario's die betrekking hebben op ingesloten objecten.

Legenda voor de weergegeven voorbeelden:

{ = Start

} = End

Voorbeeld 1: een tekstbereik dat een ingesloten teksthyperlink bevat

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

Methode aangeroepen Resultaat
GetText Retourneert de tekenreeks The URL https://www.microsoft.com is embedded in text.
GetEnclosingElement Retourneert het binnenste AutomationElement-element dat het tekstbereik omsluit; in dit geval de AutomationElement die de tekstprovider zelf vertegenwoordigt.
GetChildren Retourneert een AutomationElement dat het hyperlinkcontrolerepresenteert.
RangeFromChild waar AutomationElement is het object dat door de vorige GetChildren methode wordt geretourneerd. Retourneert het bereik dat vertegenwoordigt https://www.microsoft.com.

Voorbeeld 2: een tekstbereik dat gedeeltelijk een ingesloten teksthyperlink omvat

De URL https://{[www]} is ingesloten in tekst.

Methode aangeroepen Resultaat
GetText Retourneert de tekenreeks "www".
GetEnclosingElement Retourneert het binnenste AutomationElement dat het tekstbereik omhult; in dit geval de hyperlinkcontrole.
GetChildren Retourneert null omdat het tekstbereik niet de volledige URL-tekenreeks omvat.

Voorbeeld 3: een tekstbereik dat gedeeltelijk de inhoud van een tekstcontainer omvat. De tekstcontainer heeft een ingesloten teksthyperlink die geen deel uitmaakt van het tekstbereik.

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

Methode aangeroepen Resultaat
GetText Retourneert de tekenreeks 'De URL'.
GetEnclosingElement Retourneert het binnenste AutomationElement-element dat het tekstbereik omsluit; in dit geval de AutomationElement die de tekstprovider zelf vertegenwoordigt.
Move met parameters van (TextUnit.Word, 1). Hiermee verplaatst u het bereik naar http omdat de tekst van de hyperlink bestaat uit afzonderlijke woorden. In dit geval wordt de hyperlink niet behandeld als één object.

De URL {[http]} is ingesloten in tekst.

Afbeelding

Voorbeeld 1: een tekstbereik dat een ingesloten afbeelding bevat

{De afbeelding Embedded Image Example is ingesloten in de tekst}.

Methode aangeroepen Resultaat
GetText Retourneert de tekenreeks 'De is ingesloten in tekst'. Alle ALTERNATIEVE tekst die aan de afbeelding is gekoppeld, kan niet worden verwacht in de tekststroom te worden opgenomen.
GetEnclosingElement Retourneert het binnenste AutomationElement-element dat het tekstbereik omsluit; in dit geval de AutomationElement die de tekstprovider zelf vertegenwoordigt.
GetChildren Retourneert een AutomationElement dat het besturingselement voor de afbeelding vertegenwoordigt.
RangeFromChild waar AutomationElement is het object dat door de vorige GetChildren methode wordt geretourneerd. Retourneert het degeneratieve bereik dat staat voor "Ingesloten afbeeldingsvoorbeeld".

Voorbeeld 2: een tekstbereik dat gedeeltelijk de inhoud van een tekstcontainer omvat. De tekstcontainer heeft een ingesloten afbeelding die geen deel uitmaakt van het tekstbereik.

{De afbeelding} Voorbeeld van ingesloten afbeelding is ingesloten in tekst.

Methode aangeroepen Resultaat
GetText Retourneert de string "De afbeelding".
GetEnclosingElement Retourneert het binnenste AutomationElement-element dat het tekstbereik omsluit; in dit geval de AutomationElement die de tekstprovider zelf vertegenwoordigt.
Move met parameters van (TextUnit.Word, 1). Hiermee stelt u het tekstbereik in op 'is'. Omdat alleen ingesloten objecten op basis van tekst als onderdeel van de tekststroom worden beschouwd, heeft de afbeelding in dit voorbeeld geen invloed op Verplaatsen of de retourwaarde (1 in dit geval).

Tabel

Tabel die wordt gebruikt voor voorbeelden

Cel met afbeelding Cel met tekst
Voorbeeld van ingesloten afbeelding X
Voorbeeld van ingesloten afbeelding 2 Ja
Voorbeeld van ingesloten afbeelding 3

Afbeelding voor Z
Z

Voorbeeld 1: de tekstcontainer ophalen uit de inhoud van een cel.

Methode aangeroepen Resultaat
GetItem met parameters (0,0) Retourneert de AutomationElement inhoud van de tabelcel. In dit geval is het element een tekstbesturing.
RangeFromChild waar AutomationElement is het object dat door de vorige GetItem methode wordt geretourneerd. Retourneert het bereik dat de ingesloten afbeeldingsvoorbeeld beslaat.
GetEnclosingElement voor het object dat door de vorige RangeFromChild methode wordt geretourneerd. Retourneert de AutomationElement weergave van de tabelcel. In dit geval is het element een tekstbesturing die ondersteuning biedt voor TableItemPattern.
GetEnclosingElement voor het object dat door de vorige GetEnclosingElement methode wordt geretourneerd. Retourneert de AutomationElement representatie van de tabel.
GetEnclosingElement voor het object dat door de vorige GetEnclosingElement methode wordt geretourneerd. Retourneert de AutomationElement die de tekstprovider zelf vertegenwoordigt.

Voorbeeld 2: de tekstinhoud van een cel ophalen.

Methode aangeroepen Resultaat
GetItem met parameters van (1,1). Retourneert de AutomationElement inhoud van de tabelcel. In dit geval is het element een tekstbesturing.
RangeFromChild waar AutomationElement is het object dat door de vorige GetItem methode wordt geretourneerd. Retourneert 'Y'.

Zie ook