Bagikan melalui


TextPatternRange.MoveEndpointByUnit Metode

Definisi

Memindahkan satu titik akhir rentang teks dengan jumlah TextUnityang ditentukan dalam rentang dokumen.

public:
 int MoveEndpointByUnit(System::Windows::Automation::Text::TextPatternRangeEndpoint endpoint, System::Windows::Automation::Text::TextUnit unit, int count);
public int MoveEndpointByUnit (System.Windows.Automation.Text.TextPatternRangeEndpoint endpoint, System.Windows.Automation.Text.TextUnit unit, int count);
member this.MoveEndpointByUnit : System.Windows.Automation.Text.TextPatternRangeEndpoint * System.Windows.Automation.Text.TextUnit * int -> int
Public Function MoveEndpointByUnit (endpoint As TextPatternRangeEndpoint, unit As TextUnit, count As Integer) As Integer

Parameter

endpoint
TextPatternRangeEndpoint

Titik akhir untuk dipindahkan.

unit
TextUnit

Unit tekstual untuk pemindahan.

count
Int32

Jumlah unit yang akan dipindahkan. Jumlah positif memindahkan titik akhir ke depan. Jumlah negatif bergerak mundur. Hitungan 0 tidak berpengaruh.

Mengembalikan

Jumlah unit benar-benar dipindahkan, yang bisa kurang dari angka yang diminta jika memindahkan titik akhir berjalan ke awal atau akhir dokumen.

Contoh

private Int32 MoveEndpointByRangeFromSelection(AutomationElement target, Int32 units)
{
    // Specify the control type we're looking for, in this case 'Document'
    PropertyCondition cond = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document);

    // target --> The root AutomationElement.
    AutomationElement textProvider = target.FindFirst(TreeScope.Descendants, cond);

    TextPattern textpatternPattern = textProvider.GetCurrentPattern(TextPattern.Pattern) as TextPattern;

    if (textpatternPattern == null)
    {
        Console.WriteLine("Root element does not contain a descendant that supports TextPattern.");
        return 0;
    }
    TextPatternRange[] currentSelection = textpatternPattern.GetSelection();

    return currentSelection[0].MoveEndpointByUnit(
        TextPatternRangeEndpoint.Start, TextUnit.Paragraph, units);
}
Private Function MoveEndpointByRangeFromSelection(ByVal target As AutomationElement, ByVal units As Int32) As Int32
    ' Specify the control type we're looking for, in this case 'Document'
    Dim cond As PropertyCondition = New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document)

    ' target --> The root AutomationElement.
    Dim textProvider As AutomationElement = target.FindFirst(TreeScope.Descendants, cond)

    Dim textpatternPattern As TextPattern = CType(textProvider.GetCurrentPattern(TextPattern.Pattern), TextPattern)

    If (textpatternPattern Is Nothing) Then
        Console.WriteLine("Root element does not contain a descendant that supports TextPattern.")
        Return Nothing
    End If
    Dim currentSelection As TextPatternRange() = textpatternPattern.GetSelection()
    ' GetText(-1) retrieves all characters but can be inefficient
    Return currentSelection(0).MoveEndpointByUnit(TextPatternRangeEndpoint.Start, TextUnit.Paragraph, units)
End Function

Keterangan

Ketika perlu untuk melintasi konten rentang teks, serangkaian langkah terlibat di belakang layar agar metode Move berhasil dijalankan.

  1. Rentang teks dinormalisasi; yaitu, rentang teks diciutkan menjadi rentang yang merosot di titik akhir Start, yang membuat titik akhir End tidak berguna. Langkah ini diperlukan untuk menghapus ambiguitas dalam situasi di mana rentang teks mencakup unit batas; misalnya, "{U}RL https://www.microsoft.com/ disematkan dalam teks" di mana "{" dan "}" adalah titik akhir rentang teks.

  2. Rentang yang dihasilkan dipindahkan ke belakang di DocumentRange ke awal batas unit yang diminta.

  3. Rentang kemudian diperluas dari status rentang yang merosot dengan memindahkan titik akhir End dengan satu batas unit yang diminta.

Penyesuaian rentang dengan Pindahkan & penyesuaian Rentang ExpandToEnclosingUnit
Contoh bagaimana rentang teks disesuaikan untuk Move() dan ExpandToEnclosingUnit()

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 UI Automation mengambil teks untuk tujuan membalas, menginterpretasikan, atau menganalisis dengan cara tertentu, rentang teks harus diperiksa untuk kasus khusus, seperti tabel dengan konten tekstual atau objek tersemat 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 diperluas oleh objek yang disematkan.
Contoh aliran teks dengan objek yang disematkan dan rentang rentangnya

MoveEndpointByUnit menunda ke terbesar TextUnit berikutnya yang didukung jika yang diberikan TextUnit tidak didukung oleh kontrol.

Pesanan, dari unit terkecil hingga terbesar, tercantum di bawah ini.

Berlaku untuk