TextPatternRange.MoveEndpointByUnit Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przenosi jeden punkt końcowy zakresu tekstu o określonej liczbie TextUnits w zakresie dokumentów.
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
Punkt końcowy do przeniesienia.
- unit
- TextUnit
Jednostka tekstowa do przenoszenia.
- count
- Int32
Liczba jednostek do przeniesienia. Liczba dodatnia przenosi punkt końcowy do przodu. Ujemna liczba przechodzi do tyłu. Liczba 0 nie ma wpływu.
Zwraca
Liczba jednostek rzeczywiście przeniesionych, która może być mniejsza niż liczba żądana, jeśli przeniesienie punktu końcowego zostanie uruchomione na początku lub na końcu dokumentu.
Przykłady
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
Uwagi
Gdy konieczne jest przejście przez zawartość zakresu tekstu, seria kroków jest zaangażowana w tle, aby Move metoda została wykonana pomyślnie.
Zakres tekstu jest znormalizowany; oznacza to, że zakres tekstu jest zwinięty do zdegenerowanego zakresu w Start punkcie końcowym, co sprawia, że End punkt końcowy jest zbędny. Ten krok jest niezbędny do usunięcia niejednoznaczności w sytuacjach, w których zakres tekstu obejmuje
unit
granice, na przykład "{U}RL https://www.microsoft.com/ jest osadzony w tekście", gdzie "{" i "}" są punktami końcowymi zakresu tekstu.Wynikowy zakres jest przenoszony do DocumentRange tyłu na początku żądanej
unit
granicy.Zakres jest następnie rozszerzany z zdegenerowanego stanu zakresu przez przeniesienie End punktu końcowego przez jedną żądaną
unit
granicę.
Przykłady dostosowania zakresu tekstu dla funkcji Move() i ExpandToEnclosingUnit()
Zawartość tekstowa (lub tekst wewnętrzny) kontenera tekstowego i osadzonego obiektu, takiego jak hiperlink lub komórka tabeli, jest uwidoczniona jako pojedynczy, ciągły strumień tekstowy zarówno w widoku kontrolki, jak i widoku zawartości drzewa automatyzacja interfejsu użytkownika; granice obiektów są ignorowane. Jeśli klient automatyzacja interfejsu użytkownika pobiera tekst na potrzeby recytowania, interpretowania lub analizowania w jakiś sposób, zakres tekstu powinien być sprawdzany w specjalnych przypadkach, takich jak tabela z zawartością tekstową lub innymi obiektami osadzonymi. Można to osiągnąć przez wywołanie w GetChildren celu uzyskania elementu AutomationElement dla każdego osadzonego obiektu, a następnie wywołanie w RangeFromChild celu uzyskania zakresu tekstu dla każdego elementu. Odbywa się to cyklicznie do momentu pobrania całej zawartości tekstowej.
Przykład strumienia tekstu z osadzonymi obiektami i zakresami ich zakresów
MoveEndpointByUnit defers do następnego największego TextUnit obsługiwanego, jeśli dana wartość TextUnit nie jest obsługiwana przez kontrolkę.
Kolejność, od najmniejszej jednostki do największej, znajduje się poniżej.