TextPatternRange.MoveEndpointByUnit Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Sposta un endpoint dell'intervallo di testo il numero specificato di s all'interno dell'intervallo di TextUnitdocumenti.
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
Parametri
- endpoint
- TextPatternRangeEndpoint
Endpoint da spostare.
- unit
- TextUnit
Unità testuale per lo spostamento.
- count
- Int32
Numero di unità da spostare. Un conteggio positivo sposta l'endpoint in avanti. Un conteggio negativo si sposta all'indietro. Un conteggio di 0 non ha alcun effetto.
Valori restituiti
Numero di unità effettivamente spostate, che possono essere inferiori al numero richiesto se lo spostamento dell'endpoint viene eseguito all'inizio o alla fine del documento.
Esempio
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
Commenti
Quando è necessario attraversare il contenuto di un intervallo di testo, viene coinvolta una serie di passaggi in background affinché il Move metodo venga eseguito correttamente.
L'intervallo di testo è normalizzato; ovvero, l'intervallo di testo viene compresso in un intervallo degenerato nell'endpoint Start , che rende superfluo l'endpoint End . Questo passaggio è necessario per rimuovere l'ambiguità nelle situazioni in cui un intervallo di testo si estende sui
unitlimiti, ad esempio "{La riga https://www.microsoft.com/ U}è incorporata nel testo" dove "{" e "}" sono gli endpoint dell'intervallo di testo.L'intervallo risultante viene spostato all'indietro nel DocumentRange fino all'inizio del limite richiesto
unit.L'intervallo viene quindi espanso da uno stato degenerato dell'intervallo spostando l'endpoint End di un limite specificato
unit.
Esempi di regolazione di un intervallo di testo per Move() e ExpandToEnclosingUnit()
Il contenuto testuale (o testo interno) di un contenitore di testo o di un oggetto incorporato, ad esempio una cella di tabella o un collegamento ipertestuale, viene esposto come un flusso di testo continuo sia nella vista di controllo che nella vista del contenuto dell'albero di Automazione interfaccia utente. I limiti dell'oggetto vengono ignorati. Se un client di automazione interfaccia utente sta recuperando il testo allo scopo di recitare, interpretare o analizzare in qualche modo, l'intervallo di testo deve essere controllato per casi speciali, ad esempio una tabella con contenuto testuale o altri oggetti incorporati. A tale scopo, è possibile chiamare GetChildren per ottenere un AutomationElement oggetto per ogni oggetto incorporato e quindi chiamare RangeFromChild per ottenere un intervallo di testo per ogni elemento. Questa operazione viene eseguita in modo ricorsivo fino a quando non viene recuperato tutto il contenuto testuale.
Esempio di flusso di testo con oggetti incorporati e intervallo
MoveEndpointByUnit rinvia al successivo più grande TextUnit supportato se l'oggetto specificato TextUnit non è supportato dal controllo .
L'ordine, dall'unità più piccola alla più grande, è elencato di seguito.