Bagikan melalui


Gambaran Umum TextPattern dan Objek Tertanam

Nota

Dokumentasi ini ditujukan untuk pengembang .NET Framework yang ingin menggunakan kelas Automation UI terkelola yang ditentukan dalam namespace System.Windows.Automation. Untuk informasi terbaru tentang Automasi UI, lihat Windows Automation API: UI Automation.

Gambaran umum ini menjelaskan bagaimana Microsoft UI Automation mengekspos objek yang disematkan, atau elemen turunan, dalam dokumen teks atau kontainer.

Dalam Automasi UI, objek yang disematkan adalah elemen apa pun yang memiliki batas non-tekstual; misalnya, gambar, hyperlink, tabel, atau jenis dokumen seperti lembar bentang Microsoft Excel atau file Microsoft Windows Media. Ini berbeda dari definisi standar, di mana elemen dibuat dalam satu aplikasi dan disematkan, atau ditautkan, dalam aplikasi lain. Apakah objek dapat diedit dalam aplikasi aslinya tidak relevan dalam konteks Automasi UI.

Objek Tertanam dan Pohon UI Automation

Objek yang disematkan diperlakukan sebagai elemen individual dalam tampilan kontrol pohon Automation UI. Kontainer tersebut diekspos sebagai turunan dari kontainer teks sehingga dapat diakses melalui model yang sama dengan kontrol lain dalam Automasi UI.

Tabel Yang Disematkan dengan Gambar dalam Kontainer Teks Contoh Kontainer Teks dengan Tabel, Gambar, dan Objek Tersemat Hyperlink

Tampilan konten untuk contoh sebelumnya Contoh Tampilan Konten untuk Sebagian Kontainer Teks Sebelumnya

Mengekspos Objek Yang Disematkan Menggunakan TextPattern dan TextPatternRange

Digunakan bersamaan, kelas pola kontrol TextPattern dan kelas TextPatternRange menyediakan metode dan properti yang memfasilitasi navigasi dan kueri objek yang disematkan.

Konten tekstual (atau teks dalam) kontainer teks dan objek yang disematkan, seperti hyperlink atau sel tabel, diekspos sebagai aliran teks berkelanjutan tunggal dalam tampilan kontrol dan tampilan konten pohon Automation UI; batas objek diabaikan. Jika klien Otomasi UI mengambil teks untuk tujuan membacakan, menafsirkan, atau menganalisis dengan cara tertentu, rentang teks harus diperiksa untuk kasus khusus, seperti tabel yang berisi teks atau objek yang diintegrasikan lainnya. Ini dapat dicapai dengan memanggil GetChildren untuk mendapatkan AutomationElement untuk setiap objek yang disematkan dan kemudian memanggil RangeFromChild untuk mendapatkan rentang teks untuk setiap elemen. Ini dilakukan secara rekursif sampai semua konten tekstual diambil.

Rentang teks yang dicakup oleh objek yang disematkan. Contoh aliran teks dengan objek yang disematkan dan cakupannya

Apabila diperlukan untuk melintasi konten rentang teks, serangkaian langkah diperlukan di belakang layar agar metode Move dapat dijalankan dengan sukses.

  1. Rentang teks dinormalisasi; artinya, rentang teks diciutkan ke rentang degenerasi di Start titik akhir, yang membuat End titik akhir berlebihan. Langkah ini diperlukan untuk menghapus ambiguitas dalam situasi di mana rentang teks mencakup TextUnit batas: misalnya, {The URL https://www.microsoft.com is embedded in text di mana "{" dan "}" adalah titik akhir rentang teks.

  2. Rentang yang dihasilkan dipindahkan mundur di DocumentRange hingga awal batas yang diminta TextUnit.

  3. Rentang dipindahkan ke depan atau mundur dalam DocumentRange oleh jumlah batas-batas TextUnit yang diminta.

  4. Rentang kemudian diperluas dari keadaan rentang yang terdegenerasi dengan memindahkan titik akhir End ke satu batas TextUnit yang diminta.

Penyesuaian rentang oleh Move & ExpandToEnclosingUnit Contoh bagaimana rentang teks disesuaikan untuk Move() dan ExpandToEnclosingUnit()

Skenario Umum

Bagian berikut menyajikan contoh skenario paling umum yang melibatkan objek yang disematkan.

Legenda untuk contoh yang ditampilkan:

{ = Start

} = End

Contoh 1 - Rentang teks yang berisi hyperlink yang disematkan

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

Metode yang Dipanggil Hasil
GetText Mengembalikan string The URL https://www.microsoft.com is embedded in text.
GetEnclosingElement Mengembalikan AutomationElement terdalam yang mengapit rentang teks; dalam hal ini, AutomationElement yang merupakan penyedia teks itu sendiri.
GetChildren Mengembalikan AutomationElement yang mewakili kontrol hyperlink.
RangeFromChild di mana AutomationElement adalah objek yang dikembalikan oleh metode sebelumnya GetChildren . Mengembalikan rentang yang mewakili https://www.microsoft.com.

Contoh 2 - Rentang teks yang sebagian mencakup hyperlink teks yang disematkan

URL https://{[www]} disematkan dalam teks.

Metode yang Dipanggil Hasil
GetText Mengembalikan string "www".
GetEnclosingElement Mengembalikan AutomationElement terdalam yang mengapit rentang teks; dalam hal ini, pengendali hyperlink.
GetChildren Mengembalikan null karena rentang teks tidak mencakup seluruh string URL.

Contoh 3 - Rentang teks yang sebagian mencakup konten kontainer teks. Kontainer teks memiliki hyperlink teks yang disematkan yang bukan bagian dari rentang teks.

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

Metode yang Dipanggil Hasil
GetText Mengembalikan string "The URL".
GetEnclosingElement Mengembalikan AutomationElement terdalam yang mengapit rentang teks; dalam hal ini, AutomationElement yang merupakan penyedia teks itu sendiri.
Move dengan parameter dari (TextUnit.Word, 1). Memindahkan rentang teks ke "http" karena teks hyperlink terdiri dari kata-kata individual. Dalam hal ini, hyperlink tidak diperlakukan sebagai objek tunggal.

URL {[http]} disematkan dalam teks.

Gambar

Contoh 1 - Rentang teks yang berisi gambar yang disematkan

{Contoh Gambar Yang DisematkanGambar tersebut disematkan dalam teks}.

Metode yang Dipanggil Hasil
GetText Mengembalikan string "The terkandung di dalam teks". Teks ALT apa pun yang terkait dengan gambar tidak dapat diharapkan disertakan dalam aliran teks.
GetEnclosingElement Mengembalikan AutomationElement terdalam yang mengapit rentang teks; dalam hal ini, AutomationElement yang merupakan penyedia teks itu sendiri.
GetChildren Mengembalikan AutomationElement yang mewakili pengontrol gambar.
RangeFromChild di mana AutomationElement adalah objek yang dikembalikan oleh metode sebelumnya GetChildren . Mengembalikan rentang degenerasi yang mewakili "Contoh Gambar Tersemat".

Contoh 2 - Rentang teks yang sebagian mencakup konten kontainer teks. Kontainer teks memiliki gambar yang disematkan yang bukan bagian dari rentang teks.

{Gambar} Contoh Gambar yang Disematkan disematkan dalam teks.

Metode yang Dipanggil Hasil
GetText Mengembalikan string "Gambar tersebut".
GetEnclosingElement Mengembalikan AutomationElement terdalam yang mengapit rentang teks; dalam hal ini, AutomationElement yang merupakan penyedia teks itu sendiri.
Move dengan parameter dari (TextUnit.Word, 1). Memindahkan rentang teks ke "is ". Karena hanya objek tertanam berbasis teks yang dianggap sebagai bagian dari aliran teks, gambar dalam contoh ini tidak memengaruhi fungsi Pindahkan atau nilai pengembaliannya (1 dalam kasus ini).

Tabel

Tabel yang digunakan untuk contoh

Sel dengan Gambar Sel dengan Teks
Contoh Gambar Tertanam X
Contoh Gambar Tersemat 2 Ya
Contoh Gambar Tersemat 3

Gambar untuk Z
Z

Contoh 1 - Dapatkan kontainer teks dari konten sel.

Metode Yang Dipanggil Hasil
GetItem dengan parameter (0,0) Mengembalikan AutomationElement yang mewakili konten sel tabel; dalam hal ini, elemen adalah kontrol teks.
RangeFromChild di mana AutomationElement adalah objek yang dikembalikan oleh metode sebelumnya GetItem . Mengembalikan rentang yang mencakup gambar Contoh Gambar Tersemat.
GetEnclosingElement untuk objek yang dikembalikan oleh metode sebelumnya RangeFromChild . Mengembalikan AutomationElement yang mewakili sel tabel; dalam hal ini, elemen adalah kontrol teks yang mendukung TableItemPattern.
GetEnclosingElement untuk objek yang dikembalikan oleh metode sebelumnya GetEnclosingElement . Mengembalikan AutomationElement yang mewakili tabel.
GetEnclosingElement untuk objek yang dikembalikan oleh metode sebelumnya GetEnclosingElement . Mengembalikan AutomationElement yang mewakili penyedia teks itu sendiri.

Contoh 2 - Ambil konten teks dari sel.

Metode Yang Dipanggil Hasil
GetItem dengan parameter (1,1). Mengembalikan AutomationElement yang mewakili konten sel tabel; dalam hal ini, elemen adalah kontrol teks.
RangeFromChild di mana AutomationElement adalah objek yang dikembalikan oleh metode sebelumnya GetItem . Mengembalikan "Y".

Lihat juga