Condividi tramite


Procedura: aggiungere controlli del contenuto ai documenti di Word

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.

Tipo di progetto

  • Progetti a livello di documento

  • Progetti a livello di applicazione

Versione Microsoft Office

  • Word 2007

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

I progetti a livello di documento consentono in fase di progettazione o in fase di esecuzione l'aggiunta di controlli del contenuto al documento del progetto. A partire da Visual Studio 2008 Service Pack 1 (SP1) l'aggiunta di controlli del contenuto può essere effettuata in fase di esecuzione anche a qualsiasi documento aperto, utilizzando un componente aggiuntivo a livello di applicazione per Word 2007.

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

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 di Visual Studio Tools per Office 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 è possibile ricreare un controllo del contenuto di Visual Studio Tools per Office basato su un controllo del contenuto nativo. Per ulteriori informazioni, vedere la classe Aggiunta di controlli ai documenti di Office in fase di esecuzione.

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

A partire da SP1 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 di Visual Studio Tools per Office 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 è possibile ricreare un controllo del contenuto di Visual Studio Tools per Office basato su un controllo del contenuto nativo. Per ulteriori informazioni, vedere la classe Persistenza dei controlli dinamici nei documenti di Office.

Per ulteriori informazioni sulla creazione 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.

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()
    
        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();
    
        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()
    
        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();
    
        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
            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)
        {
            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

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

Programmazione di componenti aggiuntivi a livello di applicazione

Programmazione delle personalizzazioni a livello di documento

Metodi di supporto per i controlli host

Altre risorse

Controlli host di Word

Cronologia delle modifiche

Date

History

Motivo

Luglio 2008

Aggiunte procedure per componenti aggiuntivi a livello di applicazione.

Modifica di funzionalità in SP1.