Taal

TextPatternRange.MoveEndpointByUnit Methode

Definitie

Hiermee verplaatst u één eindpunt van het tekstbereik het opgegeven aantal TextUnits binnen het documentbereik.

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

Parameters

endpoint
TextPatternRangeEndpoint

Het eindpunt dat moet worden verplaatst.

unit
TextUnit

De tekstuele eenheid voor het verplaatsen.

count
Int32

Het aantal eenheden dat moet worden verplaatst. Een positief aantal verplaatst het eindpunt naar voren. Een negatief aantal gaat achteruit. Een telling van 0 heeft geen effect.

Retouren

Het aantal eenheden dat daadwerkelijk is verplaatst, wat kleiner kan zijn dan het aangevraagde aantal als het eindpunt wordt verplaatst naar het begin of einde van het document.

Voorbeelden

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

Opmerkingen

Wanneer het nodig is om de inhoud van een tekstbereik te doorlopen, wordt achter de schermen een reeks stappen uitgevoerd om de Move methode succesvol uit te voeren.

  1. Het tekstbereik wordt genormaliseerd; Dat wil gezegd: het tekstbereik wordt samengevouwen tot een degenererend bereik op het Start eindpunt, waardoor het End eindpunt overbodig wordt. Deze stap is nodig om dubbelzinnigheid te verwijderen in situaties waarin een tekstbereik grenzen omvat unit , bijvoorbeeld {De U}RL https://www.microsoft.com/ is ingesloten in tekst, waarbij {en }de eindpunten van het tekstbereik zijn.

  2. Het resulterende bereik wordt verplaatst achterwaarts in de DocumentRange tot het begin van de aangevraagde unit grens.

  3. Het bereik wordt vervolgens uitgebreid vanuit een gedegenereerde toestand door het End eindpunt met één aangevraagde unit grens te verplaatsen.

Bereikaanpassingen door Move & ExpandToEnclosingUnit Voorbeelden van hoe een tekstbereik wordt aangepast voor Move() en ExpandToEnclosingUnit()

De tekstuele inhoud (of binnenste tekst) van een tekstcontainer en een ingesloten object, zoals een hyperlink of tabelcel, wordt weergegeven als één doorlopende tekststroom in zowel de besturingsweergave als de inhoudsweergave van de UI Automation-structuur; objectgrenzen worden genegeerd. Als een UI Automation-client de tekst ophaalt om tekst op een bepaalde manier te reciteren, interpreteren of analyseren, moet het tekstbereik worden gecontroleerd op speciale gevallen, zoals een tabel met tekstuele inhoud of andere ingesloten objecten. Dit kan worden bereikt door aan te roepen GetChildren om een AutomationElement voor elk ingesloten object te verkrijgen en vervolgens aan te roepen RangeFromChild om een tekstbereik voor elk element te verkrijgen. Dit gebeurt recursief totdat alle tekstuele inhoud is opgehaald.

Tekstbereiken die zijn verspreid door ingesloten objecten. Voorbeeld van een tekststroom met ingesloten objecten en de bijbehorende bereikbereiken

MoveEndpointByUnit wordt uitgesteld tot het eerstvolgende grootste TextUnit ondersteund als de opgegeven TextUnit niet wordt ondersteund door het besturingselement.

De volgorde, van kleinste eenheid tot grootste, wordt hieronder vermeld.

Van toepassing op