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 del numero specificato di TextUnit nell'intervallo del documento.
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 numero positivo comporta lo spostamento in avanti dell'endpoint. Un numero negativo comporta lo spostamento indietro. Un numero pari a 0 non ha effetto.
Restituisce
Numero di unità effettivamente spostate, che può essere inferiore al numero richiesto se con lo spostamento degli endpoint si raggiunge l'inizio o la 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 scorrere il contenuto di un intervallo di testo, per garantire una corretta esecuzione del metodo Move è prevista una serie di passaggi dietro le quinte.
L'intervallo di testo viene normalizzato, ovvero viene compresso in un intervallo degenerato all'endpoint Start . Ciò rende superfluo l'endpoint End . Questo passaggio è necessario per rimuovere ambiguità in situazioni in cui un intervallo di testo si estende
unit
sui limiti, ad esempio "{La riga di comando U} https://www.microsoft.com/ è incorporata nel testo" dove "{" e "}" sono gli endpoint dell'intervallo di testo.L'intervallo risultante viene spostato indietro in DocumentRange all'inizio del limite
unit
richiesto.L'intervallo viene quindi espanso dallo stato di intervallo degenerato spostando l'endpoint End di un limite
unit
richiesto.
Esempi di regolazione di un intervallo di testo per Move() ed ExpandToEnclosingUnit()
Il contenuto testuale (o il testo interno) di un contenitore di testo e di un oggetto incorporato, ad esempio un collegamento ipertestuale o una cella di tabella, viene esposto come un singolo flusso di testo continuo nella visualizzazione di controllo e nella visualizzazione contenuto dell'albero Automazione interfaccia utente; i limiti dell'oggetto vengono ignorati. Se un client di automazione interfaccia utente sta recuperando il testo a scopo di esposizione, interpretazione o analisi, è necessario verificare l'eventuale presenza di casi speciali nell'intervallo di testo, ad esempio una tabella con contenuto testuale o altri oggetti incorporati. Questa operazione può essere eseguita chiamando GetChildren per ottenere un AutomationElement oggetto per ogni oggetto incorporato e quindi chiamando RangeFromChild per ottenere un intervallo di testo per ogni elemento. Questa operazione viene eseguita in modo ricorsivo finché non viene recuperato tutto il contenuto testuale.
Esempio di un flusso di testo con oggetti incorporati e le estensioni degli intervalli corrispondenti
MoveEndpointByUnit deferer al successivo più grande TextUnit supportato se l'oggetto specificato TextUnit non è supportato dal controllo.
L'ordine, dalla più piccola unità alla più grande, è elencato di seguito.