Delen via


Overzicht van TextPattern- en Ingesloten objecten

Notitie

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 Automation voor 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 naar het DocumentRange begin van de aangevraagde TextUnit grens verplaatst.

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

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

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

Gangbare 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 de binnenste AutomationElement die het tekstbereik omsluit; in dit geval de AutomationElement tekstprovider zelf.
GetChildren Retourneert een AutomationElement weergave van het hyperlink besturingselement.
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 insluit; in dit geval het hyperlink besturingselement.
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 de binnenste AutomationElement die het tekstbereik omsluit; in dit geval de AutomationElement tekstprovider zelf.
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 Voorbeeld van ingesloten afbeelding is ingesloten in 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 de binnenste AutomationElement die het tekstbereik omsluit; in dit geval de AutomationElement tekstprovider zelf.
GetChildren Retourneert een AutomationElement weergave van het besturingselement voor de afbeelding.
RangeFromChild waar AutomationElement is het object dat door de vorige GetChildren methode wordt geretourneerd. Retourneert het degenerate bereik dat 'Voorbeeld van ingesloten afbeelding' vertegenwoordigt.

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 tekenreeks 'De afbeelding'.
GetEnclosingElement Retourneert de binnenste AutomationElement die het tekstbereik omsluit; in dit geval de AutomationElement tekstprovider zelf.
Move met parameters van (TextUnit.Word, 1). Hiermee verplaatst u het bereik van het tekstbereik naar '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 J
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 afbeelding Voorbeeld van ingesloten afbeeldingbeslaat.
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 weergave van de tabel.
GetEnclosingElement voor het object dat door de vorige GetEnclosingElement methode wordt geretourneerd. Retourneert de AutomationElement tekstprovider zelf.

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