TextPatternRange.MoveEndpointByUnit Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Verschiebt einen Endpunkt des Textbereichs um die angegebene Anzahl von TextUnitS innerhalb des Dokumentbereichs.
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
Der zu verschiebende Endpunkt.
- unit
- TextUnit
Die Texteinheit zum Verschieben.
- count
- Int32
Die Anzahl der Einheiten, um die verschoben werden soll. Eine positive Anzahl verschiebt den Endpunkt vorwärts. Eine negative Anzahl bewegt sich rückwärts. Die Anzahl 0 hat keine Auswirkung.
Gibt zurück
Die Anzahl der tatsächlich verschobenen Einheiten, die kleiner als die angeforderte Zahl sein kann, wenn das Verschieben des Endpunkts am Anfang oder Ende des Dokuments erfolgt.
Beispiele
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
Hinweise
Wenn es erforderlich ist, den Inhalt eines Textbereichs zu durchlaufen, sind hinter den Kulissen eine Reihe von Schritten beteiligt, damit die Move Methode erfolgreich ausgeführt werden kann.
Der Textbereich wird normalisiert; d. h. der Textbereich wird auf einen degenerierten Bereich am Start Endpunkt reduziert, wodurch der End Endpunkt überflüssig wird. Dieser Schritt ist erforderlich, um Mehrdeutigkeit in Situationen zu entfernen, in denen ein Textbereich Grenzen umfasst
unit, z. B. "{Die U}RL https://www.microsoft.com/ ist in Text eingebettet", wobei "{" und "}" die Endpunkte des Textbereichs sind.Der resultierende Bereich wird im DocumentRange zurück an den Anfang der angeforderten
unit-Grenze verschoben.Der Bereich wird dann von einem degenerierten Bereichszustand erweitert, indem der End Endpunkt um eine angeforderte
unitGrenze verschoben wird.
Beispiele für die Anpassung eines Textbereichs für Move() und ExpandToEnclosingUnit()
Der textbezogene Inhalt (oder innerer Text) eines Textcontainers und eines eingebetteten Objekts, z. B. ein Link oder eine Tabellenzelle, wird als einzelner fortlaufender Textstrom sowohl in der Steuerelementansicht als auch in der Inhaltsansicht der Benutzeroberflächenautomatisierungs-Struktur verfügbar gemacht; Objektgrenzen werden ignoriert. Wenn ein Benutzeroberflächenautomatisierung-Client den Text zum Zweck des Vorlesens, Interpretierens oder Analysierens in irgendeiner Weise abruft, sollte der Textbereich auf Sonderfälle überprüft werden, z. B. eine Tabelle mit Textinhalt oder andere eingebettete Objekte. Dies kann durch aufrufen GetChildren , um ein AutomationElement eingebettetes Objekt abzurufen und dann RangeFromChild einen Textbereich für jedes Element abzurufen. Dies erfolgt rekursiv, bis alle Textinhalte abgerufen wurden.
Beispiel für einen Textstream mit eingebetteten Objekten und deren Bereichsspannen
MoveEndpointByUnit Wird auf die nächstgrößte TextUnit unterstützung zurückverzögert, wenn das angegebene TextUnit Steuerelement nicht unterstützt wird.
Die Reihenfolge, von der kleinsten Einheit bis zum größten, wird unten aufgeführt.