Megosztás a következőn keresztül:


TextPattern és Embedded Objects – áttekintés

Megjegyzés:

Ez a dokumentáció azoknak a .NET-keretrendszer-fejlesztőknek készült, akik a System.Windows.Automation névtérben definiált felügyelt felhasználói felületi Automation-osztályokat szeretnék használni. A felhasználói felület automatizálásával kapcsolatos legfrissebb információkért lásd Windows Automation API: UI Automation.

Ez az áttekintés azt ismerteti, hogy a Microsoft UI Automation hogyan teszi elérhetővé a beágyazott objektumokat vagy gyermekelemeket egy szöveges dokumentumban vagy tárolóban.

A felhasználói felületi automatizálásban a beágyazott objektumok olyan elemek, amelyek nem szöveges határokat tartalmazhatnak; például egy kép, hivatkozás, táblázat vagy dokumentumtípus, például Microsoft Excel-számolótábla vagy Microsoft Windows Media-fájl. Ez eltér a szabványos definíciótól, ahol egy elem jön létre az egyik alkalmazásban, és beágyazott vagy összekapcsolt egy másik alkalmazásban. Az, hogy az objektum szerkeszthető-e az eredeti alkalmazásban, irreleváns-e a felhasználói felület automatizálásának kontextusában.

Beágyazott objektumok és a felhasználói felület automatizálási fája

A beágyazott objektumok különálló elemekként lesznek kezelve a felhasználói felület automatizálási fájának vezérlőnézetében. A szövegtároló gyermekeiként jelennek meg, így ugyanazon a modellen keresztül érhetők el, mint a felhasználói felület automatizálásának más vezérlői.

Beágyazott táblázat képpel egy szövegtárolóban Példa táblázatos, kép- és hivatkozásalapú beágyazott objektumokkal rendelkező szövegtárolóra

Az előző példa tartalomnézete Példa az előző szövegtároló egy részének tartalomnézetére

Beágyazott objektumok felfedése TextPattern és TextPatternRange használatával

A vezérlőmintaosztály és az TextPatternTextPatternRange osztály együttesen olyan módszereket és tulajdonságokat tesz elérhetővé, amelyek megkönnyítik a beágyazott objektumok navigációját és lekérdezését.

Egy szövegtároló és egy beágyazott objektum szöveges tartalma (vagy belső szövege, például hivatkozás vagy táblázatcella) egyetlen, folyamatos szövegfolyamként jelenik meg a felhasználói felület Automation-fa vezérlő nézetében és tartalomnézetében is; az objektumhatárok figyelmen kívül lesznek hagyva. Ha egy UI Automation-ügyfél valamilyen módon szavatosítás, értelmezés vagy elemzés céljából kéri le a szöveget, a szövegtartományt speciális esetekre, például szöveges tartalommal vagy más beágyazott objektumokkal rendelkező táblázatra kell ellenőrizni. Ezt úgy érheti el, hogy meghívja a GetChildren-t, hogy minden beágyazott objektumhoz kapjon egy AutomationElement, majd meghívja a RangeFromChild-t, hogy minden elemhez kapjon egy szövegtartományt. Ez rekurzív módon történik, mindaddig, amíg az összes szöveges tartalmat le nem kérik.

Beágyazott objektumok által lefedett szövegtartományok. Példa beágyazott objektumokat és azok tartományát tartalmazó szövegstreamre

Ha egy szövegtartomány tartalmának bejárása szükséges, a módszer sikeres végrehajtásához a háttérben lépések sorozatát hajtják végre Move.

  1. A szövegtartomány normalizálva van; vagyis a szövegtartomány össze van csukva egy végponton Start lévő degenerátumtartományra, ami feleslegessé teszi a End végpontot. Ez a lépés a kétértelműség eltávolításához szükséges olyan helyzetekben, TextUnit amikor egy szövegtartomány határokat {The URL https://www.microsoft.com is embedded in text fed le: például ahol a "{" és a "}" a szövegtartomány végpontja.

  2. Az eredményül kapott tartomány a DocumentRange-ban visszafelé kerül a kért TextUnit határ elejére.

  3. A tartományt a kért számú DocumentRange határ mozgatja előre vagy hátraTextUnit.

  4. A tartomány ezután ki lesz bontva egy degenerátumtartomány-állapotból úgy, hogy a End végpontot egy kért TextUnit határra helyezi át.

Tartománybeállítás a Move és ExpandToEnclosingUnit műveletek által szerint Példák arra, hogyan van beállítva a szövegtartomány az Áthelyezés() és az ExpandToEnclosingUnit() műveleteknél

Gyakori forgatókönyvek

Az alábbi szakaszok példákat mutatnak be a beágyazott objektumokat tartalmazó leggyakoribb forgatókönyvekre.

Jelmagyarázat a bemutatott példákhoz:

{ = Start

} = End

1. példa – Beágyazott szöveges hivatkozást tartalmazó szövegtartomány

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

Hívott metódus Eredmény
GetText A The URL https://www.microsoft.com is embedded in textstringet adja vissza.
GetEnclosingElement A szövegtartományt tartalmazó legbelső AutomationElement értéket adja vissza, ebben az esetben magát a AutomationElement szövegszolgáltatót.
GetChildren A hivatkozásvezérlőt AutomationElement jelképező értéket ad vissza.
RangeFromChild hol AutomationElement található az előző GetChildren metódus által visszaadott objektum. A tartományt adja vissza, amely a https://www.microsoft.com-t képviseli.

2. példa – Egy beágyazott szöveghivatkozásra részben átnyúló szövegtartomány

Az URL-cím https://{[www]} szövegbe van ágyazva.

Hívott metódus Eredmény
GetText A "www" karakterláncot adja vissza.
GetEnclosingElement A szövegtartományt AutomationElement tartalmazó legbelső értéket adja vissza, ebben az esetben a hivatkozásvezérlőt.
GetChildren Visszaadja null , mivel a szövegtartomány nem terjed ki a teljes URL-sztringre.

3. példa – Szövegtartomány, amely részben lefedi egy szövegtároló tartalmát. A szövegtároló beágyazott szöveges hivatkozással rendelkezik, amely nem része a szövegtartománynak.

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

Hívott metódus Eredmény
GetText Az "Url" sztringet adja vissza.
GetEnclosingElement A szövegtartományt tartalmazó legbelső AutomationElement értéket adja vissza, ebben az esetben magát a AutomationElement szövegszolgáltatót.
Move paraméterekkel (TextUnit.Word, 1). A szövegtartományt "http" értékre helyezi át, mivel a hivatkozás szövege egyéni szavakból áll. Ebben az esetben a hivatkozás nem egyetlen objektumként lesz kezelve.

A(z) {[http]} URL-cím szövegbe van ágyazva.

Kép

1. példa – Beágyazott képet tartalmazó szövegtartomány

{A Beágyazott kép példa a szövegbe van ágyazva}.

Hívott metódus Eredmény
GetText A "The is embedded in text" karakterláncot adja vissza. Az a képhez társított helyettesítő szöveget nem szabad elvárni, hogy szerepeljen a szövegfolyamban.
GetEnclosingElement A szövegtartományt tartalmazó legbelső AutomationElement értéket adja vissza, ebben az esetben magát a AutomationElement szövegszolgáltatót.
GetChildren A képvezérlőt AutomationElement jelképező értéket ad vissza.
RangeFromChild hol AutomationElement található az előző GetChildren metódus által visszaadott objektum. A "Beágyazott kép példa" értéket képviselő degenerált tartományt adja vissza.

2. példa – Szövegtartomány, amely részben lefedi egy szövegtároló tartalmát. A szövegtároló beágyazott képpel rendelkezik, amely nem része a szövegtartománynak.

{A kép} Beágyazott kép példa szövegbe van ágyazva.

Hívott metódus Eredmény
GetText A "Kép" sztringet adja vissza.
GetEnclosingElement A szövegtartományt tartalmazó legbelső AutomationElement értéket adja vissza, ebben az esetben magát a AutomationElement szövegszolgáltatót.
Move paraméterekkel (TextUnit.Word, 1). A szövegtartományt az "is" értékre helyezi át. Mivel csak a szöveges alapú beágyazott objektumok tekinthetők a szövegstream részének, a példában szereplő kép nincs hatással az Áthelyezésre vagy annak visszatérési értékére (ebben az esetben 1).

Táblázat

Példákhoz használt táblázat

Cella képpel Cella szöveggel
Beágyazott kép – példa X
Beágyazott kép – 2 Y
Beágyazott képek példája 3

Z képe
Z

1. példa – A szövegtároló lekérése egy cella tartalmából.

Metódus meghívva Eredmény
GetItem paraméterekkel (0, 0) AutomationElement A táblázatcella tartalmát adja vissza. Ebben az esetben az elem egy szövegvezérlő.
RangeFromChild hol AutomationElement található az előző GetItem metódus által visszaadott objektum. A beágyazott kép példája által lefedett tartományt adja vissza.
GetEnclosingElement az előző RangeFromChild metódus által visszaadott objektumhoz. AutomationElement A táblázatcellát képviselő értéket adja vissza. Ebben az esetben az elem egy olyan szövegvezérlő, amely támogatja a TableItemPattern függvényt.
GetEnclosingElement az előző GetEnclosingElement metódus által visszaadott objektumhoz. A táblát AutomationElement képviselő értéket adja vissza.
GetEnclosingElement az előző GetEnclosingElement metódus által visszaadott objektumhoz. AutomationElement A szövegszolgáltatót jelképező értéket adja vissza.

2. példa – Cella szöveges tartalmának lekérése.

Metódus meghívva Eredmény
GetItem az (1,1) paraméterekkel. AutomationElement A táblázatcella tartalmát adja vissza. Ebben az esetben az elem egy szövegvezérlő.
RangeFromChild hol AutomationElement található az előző GetItem metódus által visszaadott objektum. Az "Y" értéket adja vissza.

Lásd még