Panoramica degli elementi host e dei controlli host

Gli elementi e i controlli host sono tipi che consentono di fornire il modello di programmazione per le soluzioni Office create tramite gli strumenti di sviluppo di Office in Visual Studio. Rendono l'interazione con i modelli a oggetti di Microsoft Office Word e Microsoft Office Excel, basati su COM, analoga all'interazione con gli oggetti gestiti, ad esempio i controlli Windows Form.

Si applica a: le informazioni contenute in questo argomento si applicano ai progetti a livello di documento e ai progetti di componente aggiuntivo VSTO per Excel e Word. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.

Elementi host

Gli elementi host sono tipi che si trovano al livello più elevato delle gerarchie del modello a oggetti nei progetti di Office. Il runtime di Strumenti di Visual Studio per Office definisce gli elementi host seguenti per le soluzioni Word ed Excel:

  • Document

  • Workbook

  • Worksheet

  • ChartSheet

    Ognuno di questi tipi estende un oggetto presente a livello nativo nel modello a oggetti di Word o Excel, denominato oggetto nativo di Office. Ad esempio, l'elemento host Document estende l'oggetto Document , definito nell'assembly di interoperabilità primario per Word.

    Gli elementi host hanno generalmente la stessa funzionalità di base degli oggetti Office corrispondenti, ma sono potenziati con le funzionalità seguenti:

  • Possibilità di ospitare i controlli gestiti, inclusi i controlli host e quelli Windows Form.

  • Modelli di eventi più ricchi. Alcuni eventi relativi a documenti, cartelle di lavoro e fogli di lavoro nei modelli a oggetti nativi di Word ed Excel vengono generati soltanto a livello di applicazione. Gli elementi host forniscono questi eventi a livello di documento, in modo che sia più semplice gestire gli eventi per un documento specifico.

Informazioni sugli elementi host nei progetti a livello di documento

Nei progetti a livello di documento, gli elementi host forniscono un punto di ingresso per il codice e contengono finestre di progettazione che consentono di sviluppare la soluzione.

Gli elementi host Document e Worksheet contengono finestre di progettazione associate che rappresentano visivamente il documento o il foglio di lavoro, in maniera analoga a quanto avviene per una finestra di progettazione di Windows Form. Questa finestra di progettazione può essere usata per modificare il contenuto del documento o del foglio di lavoro direttamente in Word o Excel e per trascinare i controlli nell'area di progettazione. Per altre informazioni, vedere Elemento host del documento e elemento host foglio di lavoro.

L'elemento host Workbook non funge da contenitore per i controlli che hanno un'interfaccia utente. La finestra di progettazione per questo elemento host funge invece da barra dei componenti che consente il trascinamento di un componente, ad esempio DataSet, nell'area di progettazione. Per altre informazioni, vedere Elemento host della cartella di lavoro.

Non è possibile creare elementi host a livello di codice nei progetti a livello di documento. Al contrario, si possono usare le classi ThisDocument, ThisWorkbooko Sheetn , generate automaticamente da Visual Studio nel progetto in fase di progettazione. Queste classi generate derivano dagli elementi host e forniscono un punto di ingresso per il codice. Per altre informazioni, vedere Limitazioni a livello di codice degli elementi host e dei controlli host.

Informazioni sugli elementi host nei progetti di componente aggiuntivo VSTO

Quando si crea un componente aggiuntivo VSTO, per impostazione predefinita non si ha accesso ad alcun elemento host. Tuttavia, è possibile generare gli elementi host Document, Workbooke Worksheet nei componenti aggiuntivi VSTO di Word e di Excel in fase di esecuzione.

Dopo aver generato un elemento host, è possibile eseguire attività quali l'aggiunta di controlli ai documenti. Per altre informazioni, vedere Estendere documenti di Word e cartelle di lavoro di Excel nei componenti aggiuntivi VSTO in fase di esecuzione.

Controlli host

I controlli host consentono di estendere vari oggetti dell'interfaccia utente nei modelli a oggetti di Word ed Excel, ad esempio gli oggetti Microsoft.Office.Interop.Word.ContentControl e Range.

Per i progetti Excel sono disponibili i controlli host seguenti:

  • Controllo grafico

  • Controllo ListObject

  • Controllo NamedRange

  • Controllo XmlMappedRange

    Per i progetti Word sono disponibili i controlli host seguenti:

  • Controllo Segnalibro

  • Controlli contenuto

  • Controllo XMLNode

  • Controllo XMLNodes

    I controlli host aggiunti ai documenti di Office si comportano come gli oggetti nativi di Office, ma dispongono di funzionalità aggiuntive che includono eventi e funzionalità di data binding. Ad esempio, per acquisire gli eventi di un oggetto Range nativo in Excel, è necessario per prima cosa gestire l'evento di modifica del foglio di lavoro. Quindi, è necessario determinare se la modifica è avvenuta all'interno di Range. Il controllo host NamedRange contiene invece un evento Change che è possibile gestire direttamente.

    La relazione tra un elemento host e i controlli host è simile alla relazione tra un Windows Form e i controlli Windows Form. Posizionare un controllo NamedRange in un elemento host Worksheet esattamente come si posiziona un controllo casella di testo in un oggetto Windows Form. L'illustrazione seguente mostra la relazione tra elementi host e controlli host.

    Relationship between host items and host controls

    È anche possibile usare i controlli Windows Form nelle soluzioni Office aggiungendoli direttamente nell'area del documento di Word ed Excel. Per altre informazioni, vedere panoramica dei controlli Windows Form nei documenti di Office.

Nota

L'aggiunta di controlli host o di controlli Windows Form a un documento secondario di Word non è supportata.

Aggiungere controlli host ai documenti

Nei progetti a livello di documento è possibile aggiungere controlli host ai documenti di Word o ai fogli di lavoro di Excel in fase di progettazione nei modi seguenti:

Controlli host dei nomi

Quando si trascina un controllo host dalla Casella degli strumenti nel documento, il controllo viene automaticamente denominato usando il tipo del controllo con un numero incrementale alla fine. I segnalibri saranno, ad esempio, denominati bookmark1, bookmark2e così via. Se si usa la funzionalità nativa di Word o Excel per aggiungere il controllo, è possibile assegnare un nome specifico al momento della creazione. È anche possibile rinominare i controlli modificando il valore della proprietà Name nella finestra Proprietà .

Nota

Nell'assegnazione di nomi ai controlli host non è possibile usare parole riservate. Se ad esempio si aggiunge un controllo NamedRange a un foglio di lavoro e si cambia il nome in System, si verificheranno degli errori durante la compilazione del progetto.

Eliminare i controlli host

Nei progetti a livello di documento è possibile eliminare i controlli host in fase di progettazione selezionando il controllo nel foglio di lavoro di Excel o nel documento di Word e premendo il tasto Elimina . Per eliminare i controlli in Excel è tuttavia necessario usare la finestra di dialogo Definisci nome NamedRange .

Se si aggiunge un controllo host a un documento in fase di progettazione, non rimuoverlo a livello di codice in fase di esecuzione perché al successivo tentativo di utilizzo del controllo nel codice verrà generata un'eccezione. Il metodo Delete di un controllo host rimuove solo i controlli host aggiunti al documento in fase di esecuzione. Se si chiama il metodo Delete di un controllo host creato in fase di progettazione, viene generata un'eccezione.

Ad esempio, il metodo Delete di un oggetto NamedRange consente di eliminare correttamente l'oggetto NamedRange solo se è stato aggiunto a livello di codice al foglio di lavoro, operazione nota come creazione di controlli host in modo dinamico. I controlli host creati dinamicamente possono essere rimossi anche passando il nome del controllo al metodo Remove della proprietà Controls o Controls . Per altre informazioni, vedere Aggiungere controlli ai documenti di Office in fase di esecuzione.

Se un utente finale elimina un controllo host dal documento in fase di esecuzione, la soluzione potrebbe non riuscire con risultati imprevisti. Per proteggere i controlli host dall'eliminazione è possibile usare le funzionalità di protezione dei documenti. Per altre informazioni, vedere Esempi di sviluppo di Office e procedure dettagliate.

Nota

Non rimuovere i controlli a livello di codice usando il gestore eventi Shutdown del documento o del foglio di lavoro. Gli elementi dell'interfaccia utente non sono più disponibili quando si verifica l'evento Shutdown . Se si vogliono rimuovere i controlli prima della chiusura dell'applicazione, aggiungere il codice a un altro gestore eventi, ad esempio BeforeClose o BeforeSave.

Programmare gli eventi di controllo host

Uno dei modi in cui i controlli host estendono gli oggetti Office è tramite l'aggiunta di eventi. Ad esempio, l'oggetto in Excel e Bookmark l'oggetto Range in Word non hanno eventi, ma il Strumenti di Visual Studio per il runtime di Office estende questi oggetti aggiungendo eventi programmabili. È possibile accedere a questi eventi e codificarli nello stesso modo in cui si accede agli eventi dei controlli presenti in Windows Form, ovvero tramite l'elenco a discesa degli eventi di Visual Basic e la pagina delle proprietà degli eventi in C#. Per altre informazioni, vedere Procedura dettagliata: Programma sugli eventi di un controllo NamedRange.

Nota

Non è necessario impostare la proprietà EnableEvents dell'oggetto Application in Excel su false. Impostando questa proprietà su false si impedisce a Excel di generare eventi, inclusi gli eventi dei controlli host.