Condividi tramite


Aggiunta di controlli ai documenti di Office in fase di esecuzione

È possibile aggiungere controlli a un documento di Microsoft Office Word e a una cartella di lavoro di Microsoft Office Excel in fase di esecuzione.È inoltre possibile rimuoverli in fase di esecuzione.I controlli aggiunti o rimossi in fase di esecuzione sono noti come controlli dinamici.

Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento e di applicazione per Excel 2013, Excel 2010, Word 2013 e Word 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.

In questo argomento viene illustrato quanto segue:

  • Gestione dei controlli in fase di esecuzione utilizzando le raccolte di controllo.

  • Aggiunta di controlli host ai documenti.

  • Aggiunta di controlli Windows Form ai documenti.

Collegamento a video Per una dimostrazione video correlata, vedere l'argomento relativo alla procedura di aggiunta di colonne all'area di un documento in fase di esecuzione (la pagina potrebbe essere in inglese).

Gestione dei controlli in fase di esecuzione utilizzando le raccolte di controllo

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

La modalità di accesso a questi oggetti dipende dal tipo di progetto che si sta sviluppando:

x97a5x3s.collapse_all(it-it,VS.110).gifAggiunta di controlli

I tipi Microsoft.Office.Tools.Word.ControlCollection e Microsoft.Office.Tools.Excel.ControlCollection includono metodi di supporto che è possibile utilizzare per aggiungere controlli host e controlli Windows Form comuni a documenti e fogli di lavoro.Nome di ciascun metodo presenta il formato Addclasse del controllo, dove classe del controllo rappresenta il nome del controllo che si desidera aggiungere.Ad esempio, per aggiungere un controllo NamedRange al documento, utilizzare il metodo AddNamedRange.

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");

x97a5x3s.collapse_all(it-it,VS.110).gifAccesso 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 raccolta 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 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.Runtime di Visual Studio Tools per Office fornisce metodi di supporto per ogni controllo.Questi metodi sono sottoposti a overload per consentire il passaggio di un intervallo o le coordinate specifiche per la posizione del controllo.

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 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.

x97a5x3s.collapse_all(it-it,VS.110).gifAggiunta di controlli personalizzati

Se si desidera aggiungere 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.Il metodo AddControl restituisce un oggetto che definisce la modalità di interazione del controllo con il foglio di lavoro o il documento.Il metodo AddControl restituisce Microsoft.Office.Tools.Excel.ControlSite (per Excel) o un oggetto Microsoft.Office.Tools.Word.ControlSite (per Word).

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 un progetto Excel a livello di documento.In questo esempio, il controllo utente denominato UserControl1e Range è denominato range1. Per utilizzare questo esempio, eseguirlo dalla classe Sheetn nel progetto.

Dim customControl As New UserControl1()

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

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

x97a5x3s.collapse_all(it-it,VS.110).gifUtilizzo 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:

  • Il controllo System.Windows.Forms.Control che rappresenta il controllo personalizzato.

  • Oggetto ControlSite, OLEObject o OLEControl che rappresenta il controllo dopo l'aggiunta al foglio di lavoro o al documento.

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

  • Per accedere ai membri appartenenti esclusivamente al controllo personalizzato, utilizzare System.Windows.Forms.Control.

  • Per accedere a membri condivisi dai controlli, utilizzare l'oggetto ControlSite, OLEObject o OLEControl.

Se si accede a un membro condiviso da System.Windows.Forms.Control, è 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'oggetto ControlSite, OLEObject o OLEControl a meno che il metodo o la proprietà da utilizzare non sia disponibile; solo in questo caso è opportuno fare riferimento a System.Windows.Forms.Control.

Ad esempio, sia la classe ControlSite 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 ControlSite 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

Cenni preliminari sui controlli Windows Form nei documenti di Office

Altre risorse

Controlli nei documenti di Office