TextPatternRange.MoveEndpointByUnit Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.
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.Výsledný rozsah se přesune dozadu DocumentRange na začátek požadovaného ohraničení
unit
.Oblast se pak rozbalí ze stavu degenerovaného rozsahu přesunutím koncového End bodu o jednu požadovanou
unit
hranici.
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.
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.