TextPatternRange.MoveEndpointByUnit Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Déplace un point de terminaison de la plage de texte le nombre spécifié de TextUnits dans la plage de documents.
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
Paramètres
- endpoint
- TextPatternRangeEndpoint
Point de terminaison à déplacer.
- unit
- TextUnit
Unité textuelle pour le déplacement.
- count
- Int32
Nombre d'unités à déplacer. Un nombre positif déplace le point de terminaison vers l’avant. Un nombre négatif se déplace vers l’arrière. Un nombre de 0 n’a aucun effet.
Retours
Nombre d’unités réellement déplacées, ce qui peut être inférieur au nombre demandé si le déplacement du point de terminaison s’exécute dans le début ou la fin du document.
Exemples
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
Remarques
Lorsqu’il est nécessaire de parcourir le contenu d’une plage de texte, une série d’étapes est impliquée en arrière-plan pour que la Move méthode s’exécute correctement.
La plage de texte est normalisée ; autrement dit, la plage de texte est réduite à une plage dégénérée au niveau du Start point de terminaison, ce qui rend le End point de terminaison superflu. Cette étape est nécessaire pour supprimer l’ambiguïté dans les situations où une plage de texte s’étend sur des
unitlimites ; par exemple, « {La liste de révocation de certificats U} https://www.microsoft.com/ est incorporée dans le texte » où « { » et « } » sont les points de terminaison de plage de texte.La plage résultante est déplacée vers l’arrière dans le DocumentRange jusqu’au début de la limite demandée
unit.La plage est ensuite étendue à partir d'un état de plage dégénérée en déplaçant le point de terminaison End d'une limite
unitdemandée.
Exemples de l’ajustement d’une plage de texte pour Move() et ExpandToEnclosingUnit()
Le contenu textuel (ou texte interne) d’un conteneur de texte et d’un objet incorporé, tel qu’un lien hypertexte ou une cellule de tableau, est exposé sous la forme d’un flux de texte unique et continu dans la vue de contrôle et l’affichage de contenu de l’arborescence UI Automation ; les limites d’objet sont ignorées. Si un client UI Automation récupère le texte à des fins de récitation, d’interprétation ou d’analyse d’une certaine manière, la plage de texte doit être vérifiée pour des cas spéciaux, tels qu’un tableau contenant du contenu textuel ou d’autres objets incorporés. Pour ce faire, appelez GetChildren pour obtenir un AutomationElement objet incorporé, puis appelez-le RangeFromChild pour obtenir une plage de texte pour chaque élément. Cela s’effectue de manière récursive jusqu’à ce que tout le contenu textuel ait été récupéré.
Exemple de flux de texte avec des objets incorporés et leurs étendues de plage
MoveEndpointByUnit reporte la plus grande TextUnit prise en charge suivante si l’élément donné TextUnit n’est pas pris en charge par le contrôle.
L’ordre, de la plus petite unité au plus grand, est répertorié ci-dessous.