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 festgelegte Anzahl von TextUnit-Einheiten 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 zu verschiebende Texteinheit.
- count
- Int32
Die Anzahl der zu verschiebenden Einheiten. Eine positive Anzahl verschiebt den Endpunkt vorwärts. Eine negative Anzahl verschiebt diesen rückwärts. Der Anzahl 0 (null) hat keine Auswirkungen.
Gibt zurück
Die Anzahl von Einheiten, um die der Endpunkt tatsächlich verschoben wurde. Diese kann kleiner als die angeforderte Anzahl sein, wenn beim Verschieben des Endpunkts der Anfang bzw. das Ende des Dokuments erreicht wird.
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 der Inhalt eines Textbereichs durchlaufen werden muss, ist eine Reihe von Hintergrundschritten erforderlich, um die Move -Methode erfolgreich auszuführen.
Der Textbereich ist normalisiert. Dies bedeutet, dass dieser auf einen degenerierten Bereich am Start -Endpunkt reduziert ist, wodurch der End -Endpunkt überflüssig wird. Dieser Schritt ist erforderlich, um Mehrdeutigkeiten in Situationen zu entfernen, in denen sich ein Textbereich über Grenzen erstreckt
unit
, z. B. "{The U}RL https://www.microsoft.com/ is embedded in text", wobei "{" und "}" die Textbereichsendpunkte sind.Der resultierende Bereich wird im DocumentRange zurück an den Anfang der angeforderten
unit
-Grenze verschoben.Anschließend wird der Bereich von einem degenerierten Bereichszustand erweitert, indem der End -Endpunkt um eine angeforderte
unit
-Grenze verschoben wird.
Beispiele für die Anpassung eines Textbereichs für Move() und ExpandToEnclosingUnit()
Der Textinhalt (oder innere Text) eines Textcontainers und ein eingebettetes Objekt, z. B. ein Link oder eine Tabellenzelle, werden in der Steuerelementansicht und der Inhaltsansicht der Struktur für die Benutzeroberflächenautomatisierung als einzelner, kontinuierlicher Textstream verfügbar gemacht. Objektgrenzen werden dabei ignoriert. Wenn ein Benutzeroberflächenautomatisierungs-Client den Text abruft, um ihn zu lesen, zu interpretieren oder zu analysieren, sollte der Textbereich auf bestimmte Fälle überprüft werden, z. B. auf Tabellen mit Textinhalt oder andere eingebettete Objekte. Dies kann erreicht werden, indem Sie aufrufen GetChildren , um für jedes eingebettete Objekt einen AutomationElement abzurufen, und dann aufrufen RangeFromChild , um einen Textbereich für jedes Element abzurufen. Dies erfolgt rekursiv, bis der gesamte Textinhalt abgerufen wurde.
Beispiel für einen Textstream mit eingebetteten Objekten und deren Bereichsabschnitten
MoveEndpointByUnit wird auf die nächstgrößer TextUnit unterstützte zurückversetzt, wenn die angegebene TextUnit vom -Steuerelement nicht unterstützt wird.
Die Reihenfolge, von der kleinsten Einheit bis zur größten, ist unten aufgeführt.