Share via


Aggiunta di controlli ai documenti di Office in fase di esecuzione

Aggiornamento: Luglio 2008

Si applica a

Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati.

Progetti a livello di documento

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

Progetti a livello di applicazione

  • Excel 2007

  • Word 2007

Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazione.

È possibile aggiungere i controlli a un documento Microsoft Office Word e a una cartella di lavoro Microsoft Office Excel 2003 e rimuoverli, in fase di esecuzione. I controlli aggiunti ai documenti in fase di esecuzione sono noti come controlli dinamici. A partire da Visual Studio 2008 Service Pack 1 (SP1) è possibile aggiungere controlli dinamici a documenti e cartelle di lavoro utilizzando componenti aggiuntivi a livello di applicazione.

In questo argomento vengono fornite le seguenti informazioni:

  • Gestione dei controlli in fase di esecuzione utilizzando gli insiemi di controllo

  • Aggiunta di controlli host ai documenti

  • Aggiunta di controlli Windows Form ai documenti

Gestione dei controlli in fase di esecuzione utilizzando gli insiemi di controllo

Per aggiungere, ottenere o rimuovere i controlli in fase di esecuzione, utilizzare i metodi di supporto delle classi Microsoft.Office.Tools.Excel.ControlCollection e Microsoft.Office.Tools.Word.ControlCollection.

La modalità di accesso agli insiemi di controllo dipende dal tipo di progetto che si sta sviluppando:

Aggiunta di controlli

Le classi Microsoft.Office.Tools.Excel.ControlCollection e Microsoft.Office.Tools.Word.ControlCollection includono metodi di supporto utilizzabili per aggiungere a documenti e fogli di lavoro controlli host e controlli Windows Form comuni. Il formato del nome del metodo è Add<classe del controllo>, in cui classe del controllo è il nome della classe del controllo da aggiungere. Ad esempio, per aggiungere un controllo NamedRange al documento, utilizzare il metodo AddNamedRange. Per un elenco completo dei metodi di supporto, vedere Metodi di supporto per i controlli host e Metodi di supporto per i controlli Windows Form.

Nell'esempio di codice seguente viene aggiunto un controllo NamedRange a un oggetto Sheet1 di un progetto a livello di documento per Excel.

Dim range1 As Excel.Range = Globals.Sheet1.Range("A1", "D5")
Dim namedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _
    Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource")
Excel.Range range1 = Globals.Sheet1.Range["A1", "D5"];
Microsoft.Office.Tools.Excel.NamedRange namedRange1 =
    Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource");

Accesso ai controlli e relativa eliminazione

È possibile utilizzare la proprietà Controls di un oggetto Microsoft.Office.Tools.Excel.Worksheet o Microsoft.Office.Tools.Word.Document per scorrere tutti i controlli nel documento, compresi i controlli aggiunti in fase di progettazione. Questi controlli sono anche noti come controlli statici.

Per rimuovere i controlli dinamici è possibile chiamare il metodo Delete del controllo oppure il metodo Remove di ogni insieme Controls. Nell'esempio di codice seguente, il metodo Remove viene utilizzato per rimuovere un controllo NamedRange dall'oggetto Sheet1 di un progetto a livello di documento per Excel.

Globals.Sheet1.Controls.Remove("ChartSource")
Globals.Sheet1.Controls.Remove("ChartSource");

I controlli statici non possono essere rimossi in fase di esecuzione. Se si tenta di utilizzare il metodo Delete o il metodo Remove per rimuovere un controllo statico, verrà generata un'eccezione CannotRemoveControlException.

Nota:

Non rimuovere a livello di codice i controlli nel gestore eventi Shutdown del documento: gli elementi di interfaccia utente del documento non sono più disponibili quando viene generato l'evento Shutdown. Se si desidera rimuovere i controlli prima della chiusura del documento, aggiungere il codice al gestore eventi per un altro evento, ad esempio Document.BeforeClose o Document.BeforeSave per Word oppure Workbook.BeforeClose o Workbook.BeforeSave per Excel.

Aggiunta di controlli host ai documenti

Quando si aggiunge a livello di codice un controllo host a un documento è necessario specificare un nome che identifichi il controllo in modo univoco nonché la posizione del documento in cui aggiungere il controllo. Per istruzioni specifiche, vedere gli argomenti seguenti:

Per ulteriori informazioni sui controlli host, vedere Cenni preliminari sugli elementi e sui controlli host.

Quando si salva e si chiude un documento, tutti i controlli host creati dinamicamente vengono disconnessi dai relativi eventi e perdono le proprie funzionalità di associazione dati. È possibile aggiungere codice alla soluzione per ricreare i controlli host quando il documento viene riaperto. Per ulteriori informazioni, vedere la classe Persistenza dei controlli dinamici nei documenti di Office.

Nota:

I controlli host XmlMappedRange, XMLNode e XMLNodes non possono essere aggiunti a livello di codice ai documenti. Di conseguenza, per tali controlli non viene fornito alcun metodo di supporto.

Aggiunta di controlli Windows Form ai documenti

Quando si aggiunge a livello di codice un controllo Windows Form a un documento, è necessario fornire il percorso del controllo e un nome che lo identifichi in modo univoco. Visual Studio Tools per Office fornisce metodi di supporto per ogni controllo. Tali metodi vengono sottoposti a overload per consentire il passaggio di un intervallo o di coordinate specifiche per la posizione del controllo. Per istruzioni specifiche, vedere Procedura: aggiungere controlli Windows Form a documenti di Office.

Quando si salva e si chiude un documento, tutti i controlli Windows Form creati dinamicamente vengono rimossi dal documento. È possibile aggiungere codice alla soluzione per ricreare i controlli quando il documento viene riaperto. Se si creano controlli Windows Form dinamici tramite un componente aggiuntivo a livello di applicazione, i wrapper ActiveX dei controlli rimangono nel documento. Per ulteriori informazioni, vedere la classe Persistenza dei controlli dinamici nei documenti di Office.

Nota:

I controlli Windows Form non possono essere aggiunti a documenti protetti a livello di codice. Per rimuovere a livello di codice la protezione di un documento di Word o di un foglio di lavoro di Excel allo scopo di aggiungere un controllo, è necessario scrivere codice aggiuntivo per rimuovere il wrapper ActiveX del controllo alla chiusura del documento. Il wrapper ActiveX del controllo non viene eliminato automaticamente dai documenti protetti.

Aggiunta di controlli personalizzati

Se si desidera aggiungere un controllo System.Windows.Forms.Control non supportato dai metodi di supporto disponibili (ad esempio, un controllo utente personalizzato), utilizzare i metodi seguenti:

Per aggiungere il controllo, passare il controllo System.Windows.Forms.Control, la posizione del controllo e un nome che lo identifichi in modo univoco al metodo AddControl. Per Excel, questo metodo restituisce un oggetto OLEObject. Per Word, questo metodo restituisce un oggetto OLEControl. Questi oggetti definiscono come il controllo interagisce con il foglio di lavoro o il documento.

Nell'esempio di codice seguente viene illustrato come utilizzare il metodo AddControl(Control, Range, String) per aggiungere dinamicamente un controllo utente personalizzato a un foglio di lavoro. In questo esempio, il controllo utente è denominato UserControl1, mentre il controllo Range è denominato range1. Nell'esempio si suppone che il codice venga eseguito da una delle classi Sheetn di un progetto a livello di documento per Excel.

Dim customControl As New UserControl1()

Dim dynamicControl As Microsoft.Office.Tools.Excel.OLEObject = _
    Me.Controls.AddControl(customControl, range1, "dynamic")
UserControl1 customControl = new UserControl1();

Microsoft.Office.Tools.Excel.OLEObject dynamicControl =
    this.Controls.AddControl(customControl, range1, "dynamic");

Utilizzo dei membri di controlli personalizzati

Dopo aver utilizzato uno dei metodi AddControl per aggiungere un controllo a un foglio di lavoro o a un documento, si dispone di due oggetti controllo diversi:

Questi controlli condividono molti metodi e proprietà. È necessario accedere a questi metodi e a queste proprietà mediante il controllo appropriato.

  • Per accedere alle proprietà e ai metodi appartenenti esclusivamente al controllo personalizzato, utilizzare il controllo System.Windows.Forms.Control.

  • Per accedere alle proprietà e ai metodi condivisi dai controlli, utilizzare il controllo OLEObject o OLEControl.

Se si utilizza il controllo System.Windows.Forms.Control per accedere a un metodo o a una proprietà condivisa, è possibile che vengano generati risultati non validi oppure che si verifichi un errore senza che vengano visualizzati avvisi o notifiche. Utilizzare sempre i metodi o le proprietà del controllo OLEObject o del controllo OLEControl, a meno che il metodo o la proprietà da utilizzare non sia disponibile; solo in questo caso è opportuno fare riferimento al controllo System.Windows.Forms.Control.

Ad esempio, sia la classe OLEObject che la classe System.Windows.Forms.Control dispongono di una proprietà Top. Per ottenere o impostare la distanza fra la parte superiore del controllo e quella del documento, utilizzare la proprietà Top del controllo OLEObject anziché la proprietà Top del controllo System.Windows.Forms.Control.

' Property is set in relation to the document.
dynamicControl.Top = 100

' Property is set in relation to the container control.
customControl.Top = 100
// Property is set in relation to the document.
dynamicControl.Top = 100;

// Property is set in relation to the container control.
customControl.Top = 100;

Vedere anche

Attività

Procedura: aggiungere controlli ListObject a fogli di lavoro

Procedura: aggiungere controlli NamedRange a fogli di lavoro

Procedura: aggiungere controlli Chart a fogli di lavoro

Procedura: aggiungere controlli del contenuto ai documenti di Word

Procedura: aggiungere controlli segnalibro ai documenti di Word

Procedura: aggiungere controlli Windows Form a documenti di Office

Concetti

Persistenza dei controlli dinamici nei documenti di Office

Metodi di supporto per i controlli host

Metodi di supporto per i controlli Windows Form

Cenni preliminari sui controlli Windows Form nei documenti di Office

Riferimenti

ControlCollection.AddControl

ControlCollection.AddControl

ControlCollection.Remove

ControlCollection.Remove

Altre risorse

Controlli nei documenti di Office

Controlli host di Excel

Controlli host di Word

Cronologia delle modifiche

Data

Cronologia

Motivo

Luglio 2008

Aggiunte informazioni su come aggiungere controlli ai documenti tramite componenti aggiuntivi a livello di applicazione.

Modifica di funzionalità in SP1.