Sdílet prostřednictvím


TextPatternRange.MoveEndpointByUnit Metoda

Definice

Přesune jeden koncový bod textového rozsahu na zadaný počet TextUnits v rámci rozsahu dokumentu.

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

Parametry

endpoint
TextPatternRangeEndpoint

Koncový bod, který se má přesunout.

unit
TextUnit

Textová jednotka pro pohyb.

count
Int32

Počet jednotek, které se mají přesunout. Kladný počet posune koncový bod vpřed. Záporný počet se přesune dozadu. Počet 0 nemá žádný vliv.

Návraty

Počet skutečně přesunutých jednotek, který může být menší než požadovaný počet, pokud přesune koncový bod na začátek nebo konec dokumentu.

Příklady

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

Poznámky

Pokud je nutné procházet obsah textového rozsahu, je na pozadí zapojena řada kroků, Move aby se metoda úspěšně spustila.

  1. Rozsah textu je normalizován; to znamená, že oblast textu je na koncovém bodu sbalená do degenerovaného rozsahu StartEnd , takže koncový bod je nadbytečný. Tento krok je nezbytný k odstranění nejednoznačnosti v situacích, kdy rozsah textu přesahuje unit hranice, například {seznam U}RL https://www.microsoft.com/ je vložený do textu, kde {a } jsou koncové body oblasti textu.

  2. Výsledný rozsah se přesune dozadu DocumentRange na začátek požadovaného ohraničení unit .

  3. Oblast se pak rozbalí ze stavu degenerovaného rozsahu přesunutím koncového End bodu o jednu požadovanou unit hranici.

Úpravy rozsahu pomocí Funkce Přesunout & Úpravy rozsahu Rozbalit NaEnclosingUnit
Příklady úprav rozsahu textu pro Move() a ExpandToEnclosingUnit()

Textový obsah (nebo vnitřní text) textového kontejneru a vloženého objektu, jako je hypertextový odkaz nebo buňka tabulky, je vystaven jako jeden souvislý textový proud v zobrazení ovládacího prvku i v zobrazení obsahu stromu model UI Automation; hranice objektů jsou ignorovány. Pokud klient model UI Automation načítá text za účelem recitování, interpretace nebo analýzy nějakým způsobem, měl by být rozsah textu zkontrolován pro zvláštní případy, jako je tabulka s textovým obsahem nebo jiné vložené objekty. Toho lze dosáhnout voláním GetChildren pro získání objektu AutomationElement pro každý vložený objekt a následným voláním RangeFromChild pro získání rozsahu textu pro každý prvek; to se provádí rekurzivně, dokud nebude načten veškerý textový obsah.

Textové oblasti rozložené vloženými objekty.
Příklad textového streamu s vloženými objekty a jejich rozsahy

MoveEndpointByUnitpokud daný TextUnit ovládací prvek nepodporuje, na další největší TextUnit podporovanou hodnotu.

Pořadí od nejmenších jednotek po největší je uvedené níže.

Platí pro