Condividi tramite


Panoramica sugli oggetti incorporati e TextPattern

Nota

Questa documentazione è destinata agli sviluppatori .NET Framework che desiderano utilizzare le classi di Automazione interfaccia utente gestite definite nello spazio dei nomi System.Windows.Automation. Per informazioni aggiornate su Automazione interfaccia utente, vedere API di automazione di Windows: Automazione interfaccia utente.

In questa panoramica è descritto come Automazione interfaccia utente di 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 quali un foglio di calcolo di Microsoft Excel o un file multimediale Microsoft Windows. Questa definizione è diversa dalla definizione standard, che prevede che un elemento venga creato in un'applicazione e incorporato o collegato in un'altra. Nel contesto dell’Automazione interfaccia utente è irrilevante che l'oggetto possa essere modificato all'interno dell'applicazione originale.

Oggetti incorporati e albero di automazione interfaccia utente

Gli oggetti incorporati vengono considerati come singoli elementi all'interno della vista di controllo dell'albero di Automazione interfaccia utente. Gli oggetti vengono esposti come elementi figlio del contenitore di testo, in modo che sia possibile accedervi tramite lo stesso modello degli altri controlli in Automazione interfaccia utente.

Tabella incorporata con immagine in un contenitore di testo Esempio di un contenitore di testo con oggetti incorporati tabella, immagine e collegamento ipertestuale

Visualizzazione del contenuto dell'esempio precedente Esempio di vista del contenuto di una parte del contenitore di testo precedente

Esporre oggetti incorporati tramite TextPattern e TextPatternRange

Usate in combinazione, le classi pattern di controllo TextPattern e TextPatternRange espongono metodi e proprietà che facilitano lo spostamento e l'esecuzione di query di 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 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 per ogni oggetto incorporato e chiamando quindi 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 estesi da oggetti incorporati. Esempio di un flusso di testo con oggetti incorporati e le estensioni degli intervalli corrispondenti

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.

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

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

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

  4. L'intervallo viene quindi espanso dallo stato di intervallo degenerato spostando l'endpoint End di un limite TextUnit richiesto.

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

Scenari comuni

Nelle sezioni seguenti vengono illustrati esempi degli scenari più comuni che prevedono l'uso di oggetti incorporati.

Legenda per gli esempi illustrati:

{ = Start

} = End

Esempio 1: intervallo di testo che contiene un collegamento ipertestuale con testo incorporato

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

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

Esempio 2: intervallo di testo che si estende parzialmente su un collegamento ipertestuale con testo incorporato

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

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

Esempio 3: un intervallo di testo che si estende parzialmente sul contenuto di un contenitore di testo. Il contenitore di testo contiene 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 chiamato Risultato
GetText Restituisce la stringa "L'URL".
GetEnclosingElement Restituisce l' AutomationElement più interno che racchiude l'intervallo di testo, in questo caso, l' AutomationElement che rappresenta il provider di testo stesso.
Move con i parametri (TextUnit.Word, 1). Sposta l'estensione dell'intervallo di intervallo di testo ad "http", poiché il testo del collegamento ipertestuale è costituito da parole singole. In questo caso, il collegamento ipertestuale non viene considerato come oggetto singolo.

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

Image

Esempio 1: intervallo di testo che contiene un'immagine incorporata

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

Metodo chiamato Risultato
GetText Restituisce la stringa "L'immagine è incorporata nel testo". Non è possibile prevedere l'inclusione nel flusso di testo dell'eventuale testo alternativo associato all'immagine.
GetEnclosingElement Restituisce l' AutomationElement più interno che racchiude l'intervallo di testo, in questo caso, l' AutomationElement che rappresenta il provider di testo stesso.
GetChildren Restituisce un AutomationElement che rappresenta il controllo immagine.
RangeFromChild dove AutomationElement è l'oggetto restituito dal metodo GetChildren precedente. Restituisce l'intervallo degenerato che rappresenta "Esempio di immagine incorporata".

Esempio 2: un 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 è incorporata nel testo.

Metodo chiamato Risultato
GetText Restituisce la stringa "L'immagine".
GetEnclosingElement Restituisce l' AutomationElement più interno che racchiude l'intervallo di testo, in questo caso, l' AutomationElement che rappresenta il provider di testo stesso.
Move con i parametri (TextUnit.Word, 1). Sposta l'estensione dell'intervallo di testo a "è". 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 valore restituito da questo metodo (1 in questo caso).

Tabella

Tabella usata per gli esempi

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

Immagine per Z
Z

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

Metodo chiamato Risultato
GetItem con parametri (0,0) Restituisce l' 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 GetItem precedente. Restituisce l'intervallo che si estende sull'immagine Esempio di immagine incorporata.
GetEnclosingElement per l'oggetto restituito dal metodo RangeFromChild precedente. Restituisce l' 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 GetEnclosingElement precedente. Restituisce l' AutomationElement che rappresenta la tabella.
GetEnclosingElement per l'oggetto restituito dal metodo GetEnclosingElement precedente. Restituisce l' AutomationElement che rappresenta il provider di testo stesso.

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

Metodo chiamato Risultato
GetItem con parametri (1,1). Restituisce l' 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 GetItem precedente. Restituisce "Y".

Vedi anche