Condividi tramite


Panoramica su TextPattern e gli oggetti incorporati

Annotazioni

Questa documentazione è destinata agli sviluppatori .NET Framework che vogliono usare le classi di automazione interfaccia utente gestite definite nello spazio dei nomi System.Windows.Automation. Per le informazioni più recenti sull'automazione interfaccia utente, vedere API di automazione di Windows: Automazione interfaccia utente.

Questa panoramica descrive in che modo Automazione interfaccia utente Microsoft espone oggetti incorporati, o elementi figlio, all'interno di un documento di testo o di un contenitore.

In Automazione interfaccia utente un oggetto incorporato è qualsiasi elemento con limiti non testuali; ad esempio un'immagine, un collegamento ipertestuale, una tabella o un tipo di documento, ad esempio un foglio di calcolo di Microsoft Excel o un file Di Microsoft Windows Media. Ciò differisce dalla definizione standard, in cui un elemento viene creato in un'applicazione e incorporato o collegato all'interno di un'altra. Se l'oggetto può essere modificato all'interno dell'applicazione originale è irrilevante nel contesto di Automazione interfaccia utente.

Oggetti incorporati e albero di automazione interfaccia utente

Gli oggetti incorporati vengono considerati come singoli elementi all'interno della visualizzazione di controllo dell'albero di automazione interfaccia utente. Vengono esposti come elementi figlio del contenitore di testo in modo che possano essere accessibili tramite lo stesso modello di altri controlli in Automazione interfaccia utente.

Tabella incorporata con immagine in un contenitore di testo Esempio di contenitore di testo con oggetti Embedded Table, Image e Hyperlink

Visualizzazione contenuto per l'esempio precedente Esempio della visualizzazione del contenuto per una parte del contenitore di testo precedente

Esporre oggetti incorporati tramite TextPattern e TextPatternRange

Usato insieme, la TextPattern classe del pattern di controllo e la TextPatternRange classe espongono metodi e proprietà che facilitano la navigazione e l'esecuzione di query su oggetti incorporati.

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 è stato recuperato l'intero contenuto testuale.

Intervalli di testo compresi in oggetti incorporati. Esempio di un flusso di testo con oggetti incorporati e i loro intervalli di spazio.

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.

  1. 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 ambiguità nelle situazioni in cui un intervallo di testo si estende sui TextUnit limiti, ad esempio dove {The URL https://www.microsoft.com is embedded in text "{" e "}" sono gli endpoint dell'intervallo di testo.

  2. L'intervallo risultante viene spostato all'indietro nel DocumentRange fino all'inizio del limite richiesto TextUnit.

  3. L'intervallo viene spostato in avanti o indietro in base al DocumentRange numero richiesto di TextUnit limiti.

  4. L'intervallo viene quindi espanso da uno stato degenerato dell'intervallo spostando l'endpoint End di un limite specificato TextUnit.

Regolazioni di intervallo per Move & ExpandToEnclosingUnit Esempi di regolazione di un intervallo di testo per Move() e ExpandToEnclosingUnit()

Scenari comuni

Le sezioni seguenti presentano esempi degli scenari più comuni che coinvolgono oggetti incorporati.

Legenda per gli esempi mostrati:

{ = Start

} = End

Esempio 1- Intervallo di testo che contiene un collegamento ipertestuale di testo incorporato

{The URL https://www.microsoft.com is embedded in text}.

Metodo invocato Risultato
GetText Restituisce la stringa The URL https://www.microsoft.com is embedded in text.
GetEnclosingElement Restituisce l'oggetto AutomationElement il più interno che contiene il range di testo, in questo caso l'oggetto AutomationElement che rappresenta il provider di testo stesso.
GetChildren Restituisce un oggetto AutomationElement che rappresenta il controllo collegamento ipertestuale.
RangeFromChild dove AutomationElement è l'oggetto restituito dal metodo precedente GetChildren . Restituisce l'intervallo che rappresenta https://www.microsoft.com.

Esempio 2- Intervallo di testo che si estende parzialmente su un collegamento ipertestuale di testo incorporato

L'URL https://{[www]} è incorporato nel testo.

Metodo invocato Risultato
GetText Restituisce la stringa "www".
GetEnclosingElement Restituisce l'elemento più interno AutomationElement che racchiude l'intervallo di testo, in questo caso il controllo del collegamento ipertestuale.
GetChildren Restituisce null poiché l'intervallo di testo non si estende sull'intera stringa URL.

Esempio 3: intervallo di testo che si estende parzialmente sul contenuto di un contenitore di testo. Il contenitore di testo ha un collegamento ipertestuale di testo incorporato che non fa parte dell'intervallo di testo.

{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.

Metodo invocato Risultato
GetText Restituisce la stringa "L'URL".
GetEnclosingElement Restituisce l'oggetto AutomationElement il più interno che contiene il range di testo, in questo caso l'oggetto AutomationElement che rappresenta il provider di testo stesso.
Move con parametri di (TextUnit.Word, 1). Sposta l'intervallo di testo su "http" perché il testo del collegamento ipertestuale è costituito da singole parole. In questo caso, il collegamento ipertestuale non viene considerato come oggetto singolo.

L'URL {[http]} è incorporato nel testo.

Immagine

Esempio 1- Intervallo di testo che contiene un'immagine incorporata

{L'immagine Esempio di immagine incorporata è incorporata nel testo}.

Metodo invocato Risultato
GetText Restituisce la stringa "è incorporato nel testo". Qualsiasi testo ALT associato all'immagine non può essere incluso nel flusso di testo.
GetEnclosingElement Restituisce l'oggetto AutomationElement il più interno che contiene il range di testo, in questo caso l'oggetto AutomationElement che rappresenta il provider di testo stesso.
GetChildren Restituisce un oggetto AutomationElement che rappresenta il controllo immagine.
RangeFromChild dove AutomationElement è l'oggetto restituito dal metodo precedente GetChildren . Restituisce l'intervallo degenerato che rappresenta "Esempio di immagine incorporata".

Esempio 2: intervallo di testo che si estende parzialmente sul contenuto di un contenitore di testo. Il contenitore di testo contiene un'immagine incorporata che non fa parte dell'intervallo di testo.

{L'immagine} Esempio di immagine incorporata è incorporato nel testo.

Metodo invocato Risultato
GetText Restituisce la stringa "L'immagine".
GetEnclosingElement Restituisce l'oggetto AutomationElement il più interno che contiene il range di testo, in questo caso l'oggetto AutomationElement che rappresenta il provider di testo stesso.
Move con parametri di (TextUnit.Word, 1). Sposta l'intervallo di testo su "è". Poiché solo gli oggetti incorporati basati su testo sono considerati parte del flusso di testo, l'immagine in questo esempio non influisce su Move o sul relativo valore restituito (1 in questo caso).

Tabella

Tabella usata per esempi

Cella con immagine Cella con testo
Esempio di immagine incorporata X
Esempio di immagine incorporata 2
Esempio di immagine incorporata 3

Immagine per Z
Z

Esempio 1: ottenere il contenitore di testo dal contenuto di una cella.

Metodo invocato Risultato
GetItem con parametri (0,0) Restituisce l'oggetto AutomationElement che rappresenta il contenuto della cella della tabella. In questo caso, l'elemento è un controllo di testo.
RangeFromChild dove AutomationElement è l'oggetto restituito dal metodo precedente GetItem . Restituisce l'intervallo che copre l'immagine Immagine Incorporata Esempio.
GetEnclosingElement per l'oggetto restituito dal metodo precedente RangeFromChild . Restituisce l'oggetto AutomationElement che rappresenta la cella della tabella. In questo caso, l'elemento è un controllo di testo che supporta TableItemPattern.
GetEnclosingElement per l'oggetto restituito dal metodo precedente GetEnclosingElement . Restituisce l'oggetto AutomationElement che rappresenta la tabella.
GetEnclosingElement per l'oggetto restituito dal metodo precedente GetEnclosingElement . Restituisce l'oggetto AutomationElement che rappresenta il provider di testo stesso.

Esempio 2: ottenere il contenuto di testo di una cella.

Metodo invocato Risultato
GetItem con parametri di (1,1). Restituisce l'oggetto AutomationElement che rappresenta il contenuto della cella della tabella. In questo caso, l'elemento è un controllo di testo.
RangeFromChild dove AutomationElement è l'oggetto restituito dal metodo precedente GetItem . Restituisce "Y".

Vedere anche