Aggiungere controlli contenuto ai documenti di Word

Nei progetti di Word a livello di documento è possibile aggiungere controlli contenuto al documento nel progetto in fase di progettazione o di esecuzione. Nei progetti di componente aggiuntivo VSTO di Word è possibile aggiungere controlli contenuto a qualsiasi documento aperto in fase di esecuzione.

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 Word. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.

Questo argomento descrive le attività seguenti:

Aggiungere controlli contenuto in fase di progettazione

Sono disponibili varie modalità di aggiunta di controlli contenuto al documento in un progetto a livello di documento in fase di progettazione:

  • Aggiungere un controllo contenuto dalla scheda Controlli Word della Casella degli strumenti.

  • Aggiungere un controllo contenuto al documento nello stesso modo in cui si aggiunge un controllo contenuto nativo in Word.

  • Trascinare un controllo contenuto nel documento dalla finestra Origini dati . Questa modalità è utile quando si vuole associare il controllo ai dati al momento della creazione del controllo. Per altre informazioni, vedere Procedura: Popolare documenti con dati da oggetti e Procedura: Popolare documenti con dati da un database.

    Nota

    I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni, vedere Personalizzare l'IDE.

Per aggiungere un controllo contenuto a un documento tramite la casella degli strumenti

  1. Nel documento ospitato nella finestra di progettazione di Visual Studio posizionare il cursore in cui si desidera aggiungere il controllo contenuto o selezionare il testo che si desidera sostituire dal controllo contenuto.

  2. Aprire la Casella degli strumenti e fare clic sulla scheda Controlli Word .

  3. Aggiungere il controllo in uno dei modi seguenti:

    • Fare doppio clic su un controllo contenuto nella Casella degli strumenti.

      oppure

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

      oppure

    • Trascinare un controllo contenuto dalla Casella degli strumenti nel documento. Il controllo contenuto viene aggiunto in corrispondenza della selezione corrente nel documento, non in corrispondenza della posizione del puntatore del mouse.

Nota

Non è possibile aggiungere un oggetto GroupContentControl usando la Casella degli strumenti. È possibile aggiungere un oggetto GroupContentControl solo in Word o in fase di esecuzione.

Nota

Visual Studio non fornisce un controllo contenuto casella di controllo nella casella degli strumenti. Per aggiungere un controllo contenuto casella di controllo al documento, è necessario creare un oggetto ContentControl a livello di codice. Per altre informazioni, vedere Controlli contenuto.

Per aggiungere un controllo contenuto a un documento in Word

  1. Nel documento ospitato nella finestra di progettazione di Visual Studio posizionare il cursore in cui si desidera aggiungere il controllo contenuto o selezionare il testo che si desidera sostituire dal controllo contenuto.

  2. Sulla barra multifunzione fare clic sulla scheda Sviluppatore .

    Nota

    Se la scheda Sviluppatore non viene mostrata, è necessario abilitarne la visualizzazione. Per altre informazioni, vedere Procedura: Visualizzare la scheda Sviluppo sulla barra multifunzione.

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

Aggiungere controlli contenuto in fase di esecuzione in un progetto a livello di documento

È possibile aggiungere controlli contenuto a livello di codice al documento in fase di esecuzione usando i metodi della proprietà Controls della classe ThisDocument nel progetto. Ogni metodo ha tre overload che è possibile usare per aggiungere un controllo contenuto nei modi seguenti:

  • Aggiungere un controllo in corrispondenza della selezione corrente.

  • Aggiungere un controllo in corrispondenza di un intervallo specificato.

  • Aggiungere un controllo basato su un controllo contenuto nativo nel documento.

    I controlli contenuto creati dinamicamente non vengono salvati in modo permanente nel documento quando questo viene chiuso. Tuttavia, un controllo contenuto nativo rimane nel documento. È possibile ricreare un controllo contenuto basato su un controllo contenuto nativo alla successiva apertura del documento. Per altre informazioni, vedere Aggiungere controlli ai documenti di Office in fase di esecuzione.

Nota

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

Per aggiungere un controllo contenuto in corrispondenza della selezione corrente

  1. Utilizzare un ControlCollection metodo con la classe> del controllo name<Add ,dove la classe control è il nome della classe del controllo contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl, e che ha un singolo parametro per il nome del nuovo controllo.

    L'esempio di codice seguente usa il metodo AddRichTextContentControl per aggiungere un nuovo oggetto RichTextContentControl all'inizio del documento. Per eseguire il codice, aggiungerlo alla classe ThisDocument nel progetto e chiamare il metodo AddRichTextControlAtSelection dal gestore eventi ThisDocument_Startup .

    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 contenuto in corrispondenza di un intervallo specificato

  1. Usare un ControlCollection metodo con la classe> del controllo name<Add (dove la classe control è il nome della classe del controllo contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl) e che ha un Range parametro .

    L'esempio di codice seguente usa il metodo AddRichTextContentControl per aggiungere un nuovo oggetto RichTextContentControl all'inizio del documento. Per eseguire il codice, aggiungerlo alla classe ThisDocument nel progetto e chiamare il metodo AddRichTextControlAtRange dal gestore eventi ThisDocument_Startup .

    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 contenuto basato su un controllo contenuto nativo

  1. Usare un ControlCollection metodo con la classe> del controllo name<Add (dove la classe control è il nome della classe del controllo contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl) e che ha un Microsoft.Office.Interop.Word.ContentControl parametro .

    L'esempio di codice seguente usa il metodo AddRichTextContentControl per creare un nuovo oggetto RichTextContentControl per ogni controllo in formato RTF nativo nel documento. Per eseguire il codice, aggiungerlo alla classe ThisDocument nel progetto e chiamare il metodo CreateRichTextControlsFromNativeControls dal gestore eventi ThisDocument_Startup .

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

Aggiungere controlli contenuto in fase di esecuzione in un progetto di componente aggiuntivo VSTO

È possibile aggiungere controlli contenuto a livello di codice a qualsiasi documento aperto in fase di esecuzione usando un componente aggiuntivo VSTO. A tale scopo, generare un elemento host Document basato su un documento aperto e quindi usare i metodi della proprietà Controls di tale elemento host. Ogni metodo ha tre overload che è possibile usare per aggiungere un controllo contenuto nei modi seguenti:

  • Aggiungere un controllo in corrispondenza della selezione corrente.

  • Aggiungere un controllo in corrispondenza di un intervallo specificato.

  • Aggiungere un controllo basato su un controllo contenuto nativo nel documento.

    I controlli contenuto creati dinamicamente non vengono salvati in modo permanente nel documento quando questo viene chiuso. Tuttavia, un controllo contenuto nativo rimane nel documento. È possibile ricreare un controllo contenuto basato su un controllo contenuto nativo alla successiva apertura del documento. Per altre informazioni, vedere Rendere persistenti i controlli dinamici nei documenti di Office.

    Per altre informazioni sulla generazione di elementi host nei progetti di componente aggiuntivo VSTO, vedere Estendere documenti di Word e cartelle di lavoro di Excel nei componenti aggiuntivi VSTO in fase di esecuzione.

Nota

Per aggiungere un controllo contenuto casella di controllo a un documento è necessario creare un oggetto ContentControl . Per altre informazioni, vedere Controlli contenuto.

Per aggiungere un controllo contenuto in corrispondenza della selezione corrente

  1. Utilizzare un ControlCollection metodo con la classe> del controllo name<Add ,dove la classe control è il nome della classe del controllo contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl, e che ha un singolo parametro per il nome del nuovo controllo.

    L'esempio di codice seguente usa il metodo AddRichTextContentControl per aggiungere un nuovo oggetto RichTextContentControl all'inizio del documento attivo. Per eseguire il codice, aggiungerlo alla classe ThisAddIn nel progetto e chiamare il metodo AddRichTextControlAtSelection dal gestore eventi ThisAddIn_Startup .

    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 = Globals.Factory.GetVstoObject(currentDocument);
    
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

Per aggiungere un controllo contenuto in corrispondenza di un intervallo specificato

  1. Usare un ControlCollection metodo con la classe> del controllo name<Add (dove la classe control è il nome della classe del controllo contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl) e che ha un Range parametro .

    L'esempio di codice seguente usa il metodo AddRichTextContentControl per aggiungere un nuovo oggetto RichTextContentControl all'inizio del documento attivo. Per eseguire il codice, aggiungerlo alla classe ThisAddIn nel progetto e chiamare il metodo AddRichTextControlAtRange dal gestore eventi ThisAddIn_Startup .

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        richTextControl2 = extendedDocument.Controls.AddRichTextContentControl(
            currentDocument.Paragraphs[1].Range, "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

Per aggiungere un controllo contenuto basato su un controllo contenuto nativo

  1. Usare un ControlCollection metodo con la classe> del controllo name<Add (dove la classe control è il nome della classe del controllo contenuto che si desidera aggiungere, ad esempio AddRichTextContentControl) e che ha un Microsoft.Office.Interop.Word.ContentControl parametro .

    L'esempio di codice seguente usa il metodo AddRichTextContentControl per creare un nuovo oggetto RichTextContentControl per ogni controllo in formato RTF nativo in un documento, dopo l'apertura del documento. Per eseguire il codice, aggiungerlo alla classe ThisAddIn nel progetto.

    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 = Globals.Factory.GetVstoObject(Doc);
    
            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);
                }
            }
        }
    }
    

    Per C#, è anche necessario collegare il gestore eventi Application_DocumentOpen all'evento DocumentOpen .

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