Condividi tramite


Procedura: aggiungere controlli del contenuto ai documenti di Word

I progetti Word a livello di documento consentono l'aggiunta di controlli del contenuto al documento del progetto in fase di progettazione o in fase di esecuzione. Nei progetti Word a livello di applicazione, è possibile aggiungere controlli del contenuto a qualsiasi documento aperto in fase di esecuzione.

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

In questo argomento vengono descritte le attività seguenti:

  • Aggiunta di controlli del contenuto in fase di progettazione

  • Aggiunta di controlli del contenuto in fase di esecuzione in un progetto a livello di documento

  • Aggiunta di controlli del contenuto in fase di esecuzione in un progetto a livello di applicazione

Per ulteriori informazioni sui controlli del contenuto, vedere Controlli del contenuto.

Aggiunta di controlli del contenuto in fase di progettazione

Esistono diversi modi per aggiungere in fase di progettazione controlli del contenuto a un documento di un progetto a livello di documento:

  • Tramite l'aggiunta di un controllo del contenuto della scheda Controlli Word della Casella degli strumenti.

  • Mediante la stessa procedura utilizzata per aggiungere un controllo del contenuto nativo di Word.

  • Tramite il trascinamento del controllo del contenuto dalla finestra Origini dati. Questa procedura è utile se, al momento della creazione del controllo, si desidera associare il controllo a determinati dati. Per ulteriori informazioni, vedere°Procedura: compilare documenti con dati da oggetti e Procedura: popolare documenti con dati da un database.

Nota

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Per aggiungere un controllo del contenuto a un documento mediante la Casella degli strumenti

  1. Nel documento ospitato nella finestra di progettazione di Visual Studio, posizionare il cursore nel punto in cui si desidera aggiungere il controllo del contenuto. In alternativa, selezionare il testo a cui si desidera sostituire il controllo del contenuto.

  2. Aprire la Casella degli strumenti e selezionare la scheda Controlli Word.

  3. Aggiungere il controllo in uno dei modi seguenti:

    • Fare doppio clic sul controllo del contenuto nella Casella degli strumenti.

      oppure

    • Fare clic su un controllo del contenuto nella Casella degli strumenti e quindi premere INVIO.

      oppure

    • Trascinare il controllo del contenuto dalla Casella degli strumenti al documento. Il controllo del contenuto viene aggiunto in corrispondenza della selezione corrente del documento, non nella posizione indicata dal puntatore del mouse.

Nota

I controlli GroupContentControl non possono essere aggiunti tramite la Casella degli strumenti. I controlli GroupContentControl possono infatti essere aggiunti soltanto in Word oppure in fase di esecuzione.

Nota

Visual Studio non fornisce un controllo contenuto della casella di controllo nella Casella degli strumenti per i progetti Word 2010. Per aggiungere un controllo contenuto della casella di controllo al documento, è necessario creare a livello di codice un oggetto ContentControl. Per ulteriori informazioni, vedere Controlli del contenuto.

Per aggiungere un controllo del contenuto a un documento Word

  1. Nel documento ospitato nella finestra di progettazione di Visual Studio, posizionare il cursore nel punto in cui si desidera aggiungere il controllo del contenuto. In alternativa, selezionare il testo a cui si desidera sostituire il controllo del contenuto.

  2. Nella barra multifunzione, fare clic sulla scheda Sviluppatore.

    Nota

    Se la scheda Sviluppatore non è visibile, è necessario prima visualizzarla. Per ulteriori informazioni, vedere Procedura: visualizzare la scheda Sviluppo nella barra multifunzione.

  3. Nel gruppo Controlli, fare clic sull'icona del controllo del contenuto che si desidera aggiungere.

Aggiunta di controlli del contenuto in fase di esecuzione in un progetto a livello di documento

Per aggiungere controlli del contenuto al documento a livello di codice in fase di esecuzione è possibile utilizzare i metodi della proprietà Controls della classe ThisDocument del progetto. Ogni metodo presenta tre overload utilizzabili per aggiungere un controllo del contenuto nei modi seguenti:

  • Aggiunta di un controllo in corrispondenza della selezione corrente.

  • Aggiunta di un controllo in un intervallo specificato.

  • Aggiunta di un controllo basato su un controllo del contenuto nativo presente nel documento.

I controlli del contenuto creati in modo dinamico non vengono mantenuti nel documento quando quest'ultimo viene chiuso. Tuttavia, un controllo del contenuto nativo rimane nel documento. Alla successiva apertura del documento sarà possibile ricreare un controllo del contenuto basato su un controllo del contenuto nativo. Per ulteriori informazioni, vedere Aggiunta di controlli ai documenti di Office in fase di esecuzione.

Nota

Per aggiungere un controllo contenuto della casella di controllo a un documento di un progetto Word 2010, è necessario creare un oggetto ContentControl. Per ulteriori informazioni, vedere Controlli del contenuto.

Per aggiungere un controllo del contenuto in corrispondenza della selezione corrente

  • Utilizzare un metodo ControlCollection che presenta il nome Add<classe controllo> (dove classe controllo rappresenta il nome della classe del controllo del contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl) e che presenta un unico parametro per il nome del nuovo controllo.

    Nell'esempio di codice seguente si utilizza il metodo ControlCollection.AddRichTextContentControl(String) per aggiungere un nuovo controllo RichTextContentControl all'inizio del documento. Per eseguire questo codice è necessario aggiungerlo alla classe ThisDocument del progetto e quindi chiamare il metodo AddRichTextControlAtSelection dal gestore eventi ThisDocument_Startup.

    Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtSelection()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Me.Paragraphs(1).Range.Select()
        richTextControl1 = Me.Controls.AddRichTextContentControl("richTextControl1")
        richTextControl1.PlaceholderText = "Enter your first name"
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1;
    
    private void AddRichTextControlAtSelection()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        this.Paragraphs[1].Range.Select();
    
        richTextControl1 = this.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

Per aggiungere un controllo del contenuto in un intervallo specificato

  • Utilizzare un metodo ControlCollection che presenta il nome Add<classe controllo> (dove classe controllo rappresenta il nome del controllo del contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl) e che presenta un parametro Microsoft.Office.Interop.Word.Range.

    Nell'esempio di codice seguente si utilizza il metodo ControlCollection.AddRichTextContentControl(Range, String) per aggiungere un nuovo controllo RichTextContentControl all'inizio del documento. Per eseguire questo codice è necessario aggiungerlo alla classe ThisDocument del progetto e quindi chiamare il metodo AddRichTextControlAtRange dal gestore eventi ThisDocument_Startup.

    Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtRange()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        richTextControl2 = Me.Controls.AddRichTextContentControl(Me.Paragraphs(1).Range, _
            "richTextControl2")
        richTextControl2.PlaceholderText = "Enter your first name"
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
    
        richTextControl2 = this.Controls.AddRichTextContentControl(this.Paragraphs[1].Range,
            "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

Per aggiungere un controllo del contenuto basato su un controllo del contenuto nativo

  • Utilizzare un metodo ControlCollection che presenta il nome Add<classe controllo> (dove classe controllo rappresenta il nome del controllo del contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl) e che presenta un parametro Microsoft.Office.Interop.Word.ContentControl.

    Nell'esempio di codice seguente viene utilizzato il metodo ControlCollection.AddRichTextContentControl(ContentControl, String) per creare un nuovo controllo RichTextContentControl per ogni controllo RTF nativo presente nel documento. Per eseguire questo codice è necessario aggiungerlo alla classe ThisDocument del progetto e quindi chiamare il metodo CreateRichTextControlsFromNativeControls dal gestore eventi ThisDocument_Startup.

    Private richTextControls As New System.Collections.Generic.List _
            (Of Microsoft.Office.Tools.Word.RichTextContentControl)
    
    Private Sub CreateRichTextControlsFromNativeControls()
        If Me.ContentControls.Count <= 0 Then
            Return
        End If
    
        Dim count As Integer = 0
        For Each nativeControl As Word.ContentControl In Me.ContentControls
            If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then
                count += 1
                Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _
                    Me.Controls.AddRichTextContentControl(nativeControl, _
                    "VSTORichTextContentControl" + count.ToString())
                richTextControls.Add(tempControl)
            End If
        Next nativeControl
    End Sub
    
    private System.Collections.Generic.List
        <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls;
    
    private void CreateRichTextControlsFromNativeControls()
    {
        if (this.ContentControls.Count <= 0)
            return;
    
        richTextControls = new System.Collections.Generic.List
            <Microsoft.Office.Tools.Word.RichTextContentControl>();
        int count = 0;
    
        foreach (Word.ContentControl nativeControl in this.ContentControls)
        {
            if (nativeControl.Type ==
                Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
            {
                count++;
                Microsoft.Office.Tools.Word.RichTextContentControl tempControl =
                    this.Controls.AddRichTextContentControl(nativeControl,
                    "VSTORichTextControl" + count.ToString());
                richTextControls.Add(tempControl);
            }
        }
    }
    

Aggiunta di controlli del contenuto in fase di esecuzione in un progetto a livello di applicazione

L'aggiunta di controlli del contenuto può essere effettuata a livello di codice in fase di esecuzione in qualsiasi documento aperto, utilizzando un componente aggiuntivo a livello di applicazione. A tale scopo, creare un elemento host Document basato su un documento aperto e quindi utilizzare i metodi della proprietà Controls di tale elemento host. Ogni metodo presenta tre overload utilizzabili per aggiungere un controllo del contenuto nei modi seguenti:

  • Aggiunta di un controllo in corrispondenza della selezione corrente.

  • Aggiunta di un controllo in un intervallo specificato.

  • Aggiunta di un controllo basato su un controllo del contenuto nativo presente nel documento.

I controlli del contenuto creati in modo dinamico non vengono mantenuti nel documento quando quest'ultimo viene chiuso. Tuttavia, un controllo del contenuto nativo rimane nel documento. Alla successiva apertura del documento sarà possibile ricreare un controllo del contenuto basato su un controllo del contenuto nativo. Per ulteriori informazioni, vedere Persistenza dei controlli dinamici nei documenti di Office.

Per ulteriori informazioni sulla generazione di elementi host nei progetti a livello di applicazione, vedere Estensione in fase di esecuzione di documenti di Word e di cartelle di lavoro di Excel in componenti aggiuntivi a livello di applicazione.

Nota

Per aggiungere un controllo contenuto della casella di controllo a un documento di un progetto Word 2010, è necessario creare un oggetto ContentControl. Per ulteriori informazioni, vedere Controlli del contenuto.

Per aggiungere un controllo del contenuto in corrispondenza della selezione corrente

  • Utilizzare un metodo ControlCollection che presenta il nome Add<classe controllo> (dove classe controllo rappresenta il nome della classe del controllo del contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl) e che presenta un unico parametro per il nome del nuovo controllo.

    Nell'esempio di codice seguente si utilizza il metodo ControlCollection.AddRichTextContentControl(String) per aggiungere un nuovo controllo RichTextContentControl all'inizio del documento attivo. Per eseguire questo codice è necessario aggiungerlo alla classe ThisAddIn del progetto e quindi chiamare il metodo AddRichTextControlAtSelection dal gestore eventi ThisAddIn_Startup.

    Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtSelection()
        Dim currentDocument As Word.Document = Me.Application.ActiveDocument
        currentDocument.Paragraphs(1).Range.InsertParagraphBefore()
        currentDocument.Paragraphs(1).Range.Select()
    
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code.
        ' Dim extendedDocument As Document = currentDocument.GetVstoObject()
    
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1")
        richTextControl1.PlaceholderText = "Enter your first name"
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1;
    
    private void AddRichTextControlAtSelection()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
        currentDocument.Paragraphs[1].Range.Select();
    
        // Use the following line of code in projects that target the .NET Framework 4.
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        // Document extendedDocument = currentDocument.GetVstoObject();
    
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

Per aggiungere un controllo del contenuto in un intervallo specificato

  • Utilizzare un metodo ControlCollection che presenta il nome Add<classe controllo> (dove classe controllo rappresenta il nome del controllo del contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl) e che presenta un parametro Microsoft.Office.Interop.Word.Range.

    Nell'esempio di codice seguente si utilizza il metodo ControlCollection.AddRichTextContentControl(Range, String) per aggiungere un nuovo controllo RichTextContentControl all'inizio del documento attivo. Per eseguire questo codice è necessario aggiungerlo alla classe ThisAddIn del progetto e quindi chiamare il metodo AddRichTextControlAtRange dal gestore eventi ThisAddIn_Startup.

    Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtRange()
        Dim currentDocument As Word.Document = Me.Application.ActiveDocument
        currentDocument.Paragraphs(1).Range.InsertParagraphBefore()
    
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code.
        ' Dim extendedDocument As Document = currentDocument.GetVstoObject()
    
        richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( _
            extendedDocument.Paragraphs(1).Range, "richTextControl2")
        richTextControl2.PlaceholderText = "Enter your first name"
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        // Use the following line of code in projects that target the .NET Framework 4.
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        // Document extendedDocument = currentDocument.GetVstoObject();
    
        richTextControl2 = extendedDocument.Controls.AddRichTextContentControl(
            currentDocument.Paragraphs[1].Range, "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

Per aggiungere un controllo del contenuto basato su un controllo del contenuto nativo

  • Utilizzare un metodo ControlCollection che presenta il nome Add<classe controllo> (dove classe controllo rappresenta il nome del controllo del contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl) e che presenta un parametro Microsoft.Office.Interop.Word.ContentControl.

    Nell'esempio di codice seguente viene utilizzato il metodo ControlCollection.AddRichTextContentControl(ContentControl, String) per creare un nuovo controllo RichTextContentControl per ogni controllo testo RTF nativo presente in un documento dopo la sua apertura. Per eseguire questo codice, aggiungerlo nella classe ThisAddIn del progetto.

    Private richTextControls As New System.Collections.Generic.List _
        (Of Microsoft.Office.Tools.Word.RichTextContentControl)
    
    Private Sub Application_DocumentOpen(ByVal Doc As Microsoft.Office.Interop.Word.Document) _
        Handles Application.DocumentOpen
    
        If Doc.ContentControls.Count > 0 Then
    
            ' Use the following line of code in projects that target the .NET Framework 4.
            Dim extendedDocument As Document = Globals.Factory.GetVstoObject(Doc)
    
            ' In projects that target the .NET Framework 3.5, use the following line of code.
            ' Dim extendedDocument As Document = Doc.GetVstoObject()
    
            Dim count As Integer = 0
            For Each nativeControl As Word.ContentControl In Doc.ContentControls
                If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then
                    count += 1
                    Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _
                        extendedDocument.Controls.AddRichTextContentControl(nativeControl, _
                        "VSTORichTextContentControl" + count.ToString())
                    richTextControls.Add(tempControl)
                End If
            Next nativeControl
        End If
    End Sub
    
    private System.Collections.Generic.List
        <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls;
    
    private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc)
    {
        if (Doc.ContentControls.Count > 0)
        {
            // Use the following line of code in projects that target the .NET Framework 4.
            Document extendedDocument = Globals.Factory.GetVstoObject(Doc);
    
            // In projects that target the .NET Framework 3.5, use the following line of code.
            // Document extendedDocument = Doc.GetVstoObject();
    
            richTextControls = new System.Collections.Generic.List
                <Microsoft.Office.Tools.Word.RichTextContentControl>();
            int count = 0;
    
            foreach (Word.ContentControl nativeControl in Doc.ContentControls)
            {
                if (nativeControl.Type ==
                    Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
                {
                    count++;
                    Microsoft.Office.Tools.Word.RichTextContentControl tempControl =
                        extendedDocument.Controls.AddRichTextContentControl(nativeControl,
                        "VSTORichTextControl" + count.ToString());
                    richTextControls.Add(tempControl);
                }
            }
        }
    }
    

    In C# è inoltre necessario collegare il gestore eventi Application_DocumentOpen all'evento DocumentOpen.

    this.Application.DocumentOpen +=
        new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);
    

Vedere anche

Concetti

Automazione di Word utilizzando oggetti estesi

Cenni preliminari sugli elementi e sui controlli host

Aggiunta di controlli ai documenti di Office in fase di esecuzione

Limitazioni a livello di codice degli elementi e dei controlli host

Metodi di supporto per i controlli host

Altre risorse

Programmazione di componenti aggiuntivi a livello di applicazione

Programmazione delle personalizzazioni a livello di documento