Freigeben über


Gewusst wie: Hinzufügen von Inhaltssteuerelementen zu Word-Dokumenten

In Word-Projekten auf Dokumentebene können Sie dem Dokument im Projekt Inhaltssteuerelemente zur Entwurfszeit oder zur Laufzeit hinzufügen. In Word-Projekten auf Anwendungsebene können Sie zur Laufzeit jedem geöffneten Dokument Inhaltssteuerelemente hinzufügen.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokument- und auf Anwendungsebene für Word 2007 und Word 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

In diesem Thema werden die folgenden Aufgaben erläutert:

  • Hinzufügen von Inhaltssteuerelementen zur Entwurfszeit

  • Hinzufügen von Inhaltssteuerelementen zur Laufzeit in einem Projekt auf Dokumentebene

  • Hinzufügen von Inhaltssteuerelementen zur Laufzeit in einem Projekt auf Anwendungsebene

Weitere Informationen zu Inhaltssteuerelementen finden Sie unter Inhaltssteuerelemente.

Hinzufügen von Inhaltssteuerelementen zur Entwurfszeit

Es gibt verschiedene Möglichkeiten, um Inhaltssteuerelemente zur Entwurfszeit einem Projekt auf Dokumentebene hinzuzufügen:

Tipp

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

So fügen Sie einem Dokument mit der Toolbox ein Inhaltssteuerelement hinzu

  1. Setzen Sie in dem Dokument, das im Visual Studio-Designer gehostet wird, den Cursor an die Stelle, an der das Inhaltssteuerelement eingefügt werden soll, oder wählen Sie den Text aus, den das Inhaltssteuerelement ersetzen soll.

  2. Öffnen Sie die Toolbox, und klicken Sie auf die Registerkarte Word-Steuerelemente.

  3. Fügen Sie das Steuerelement folgendermaßen hinzu:

    • Doppelklicken Sie in der Toolbox auf ein Inhaltssteuerelement.

      oder

    • Klicken Sie in der Toolbox auf ein Inhaltssteuerelement, und drücken Sie dann die EINGABETASTE.

      oder

    • Ziehen Sie ein Inhaltssteuerelement aus der Toolbox in das Dokument. Das Inhaltssteuerelement wird bei der aktuellen Auswahl im Dokument hinzugefügt und nicht an der Position des Mauszeigers.

Tipp

Sie können kein GroupContentControl hinzufügen, indem Sie die Toolbox verwenden. Sie können ein GroupContentControl nur in Word oder zur Laufzeit hinzufügen.

Tipp

In Visual Studio wird in der Toolbox für Word 2010-Projekte kein Kontrollkästchen-Inhaltssteuerelement bereitgestellt. Erstellen Sie programmgesteuert ein ContentControl-Objekt, um dem Dokument ein Kontrollkästchen-Inhaltssteuerelement hinzuzufügen. Weitere Informationen finden Sie unter Inhaltssteuerelemente.

So fügen Sie einem Dokument in Word ein Inhaltssteuerelement hinzu

  1. Setzen Sie in dem Dokument, das im Visual Studio-Designer gehostet wird, den Cursor an die Stelle, an der das Inhaltssteuerelement eingefügt werden soll, oder wählen Sie den Text aus, den das Inhaltssteuerelement ersetzen soll.

  2. Klicken Sie auf dem Menüband auf die Registerkarte Entwickler.

    Tipp

    Wenn die Registerkarte Entwickler nicht sichtbar ist, müssen Sie diese zuerst anzeigen. Weitere Informationen finden Sie unter Gewusst wie: Anzeigen der Registerkarte "Entwickler" auf der Multifunktionsleiste.

  3. Klicken Sie in der Gruppe Steuerelemente auf das Symbol für das Inhaltssteuerelement, das Sie hinzufügen möchten.

Hinzufügen von Inhaltssteuerelementen zur Laufzeit in einem Projekt auf Dokumentebene

Sie können dem Dokument zur Laufzeit programmgesteuert Inhaltssteuerelemente hinzufügen, indem Sie Methoden der Controls-Eigenschaft der ThisDocument-Klasse in Ihrem Projekt verwenden. Jede Methode besitzt drei Überladungen, die Sie verwenden können, um ein Inhaltssteuerelement folgendermaßen hinzuzufügen:

  • Fügen Sie ein Steuerelement bei der aktuellen Auswahl hinzu.

  • Fügen Sie ein Steuerelement in einem angegebenen Bereich hinzu.

  • Fügen Sie ein Steuerelement hinzu, das auf einem systemeigenen Inhaltssteuerelement in dem Dokument basiert.

Dynamisch erstellte Inhaltssteuerelemente werden beim Schließen des Dokuments nicht im Dokument beibehalten. Ein systemeigenes Inhaltssteuerelement bleibt jedoch im Dokument. Sie können ein Inhaltssteuerelement neu erstellen, das auf einem systemeigenen Inhaltssteuerelement basiert, wenn das Dokument das nächste Mal geöffnet wird. Weitere Informationen finden Sie unter Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit.

Tipp

Erstellen Sie ein ContentControl-Objekt, um einem Dokument in einem Word 2010-Projekt ein Kontrollkästchen-Inhaltssteuerelement hinzuzufügen. Weitere Informationen finden Sie unter Inhaltssteuerelemente.

So fügen Sie ein Inhaltssteuerelement bei der aktuellen Auswahl hinzu

  • Verwenden Sie eine ControlCollection-Methode mit dem Namen Add<control class> (wobei control class der Klassenname des Inhaltssteuerelements ist, das Sie hinzufügen möchten, z. B. AddRichTextContentControl) und mit einem einzelnen Parameter für den Namen des neuen Steuerelements.

    Im folgenden Codebeispiel wird die ControlCollection.AddRichTextContentControl(String)-Methode verwendet, um ein neues RichTextContentControl am Anfang des Dokuments einzufügen. Zum Ausführen dieses Codes fügen Sie den Code zur ThisDocument-Klasse im Projekt hinzu, und rufen Sie im ThisDocument_Startup-Ereignishandler die AddRichTextControlAtSelection-Methode auf.

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

So fügen Sie ein Inhaltssteuerelement in einem angegebenen Bereich hinzu

  • Verwenden Sie eine ControlCollection-Methode mit dem Namen Add<control class> (wobei control class der Name der Inhaltssteuerelementklasse ist, die Sie hinzufügen möchten, z. B. AddRichTextContentControl) und mit einem Microsoft.Office.Interop.Word.Range-Parameter.

    Im folgenden Codebeispiel wird die ControlCollection.AddRichTextContentControl(Range, String)-Methode verwendet, um ein neues RichTextContentControl am Anfang des Dokuments einzufügen. Zum Ausführen dieses Codes fügen Sie den Code zur ThisDocument-Klasse im Projekt hinzu, und rufen Sie im ThisDocument_Startup-Ereignishandler die AddRichTextControlAtRange-Methode auf.

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

So fügen Sie ein Inhaltssteuerelement hinzu, das auf einem systemeigenen Inhaltssteuerelement basiert

  • Verwenden Sie eine ControlCollection-Methode mit dem Namen Add<control class> (wobei control class der Name der Inhaltssteuerelementklasse ist, die Sie hinzufügen möchten, z. B. AddRichTextContentControl) und mit einem Microsoft.Office.Interop.Word.ContentControl-Parameter.

    Im folgenden Codebeispiel wird die ControlCollection.AddRichTextContentControl(ContentControl, String)-Methode verwendet, um ein neues RichTextContentControl für jedes systemeigene Rich-Text-Steuerelement im Dokument zu erstellen. Zum Ausführen dieses Codes fügen Sie den Code zur ThisDocument-Klasse im Projekt hinzu, und rufen Sie im ThisDocument_Startup-Ereignishandler die CreateRichTextControlsFromNativeControls-Methode auf.

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

Hinzufügen von Inhaltssteuerelementen zur Laufzeit in einem Projekt auf Anwendungsebene

Sie können jedem geöffneten Dokument zur Laufzeit programmgesteuert mit einem Add-In auf Anwendungsebene ein Inhaltssteuerelement hinzufügen. Generieren Sie dazu ein Document-Hostelement auf der Basis eines geöffneten Dokuments, und verwenden Sie dann die Methoden der Controls-Eigenschaft dieses Hostelements. Jede Methode besitzt drei Überladungen, die Sie verwenden können, um ein Inhaltssteuerelement folgendermaßen hinzuzufügen:

  • Fügen Sie ein Steuerelement bei der aktuellen Auswahl hinzu.

  • Fügen Sie ein Steuerelement in einem angegebenen Bereich hinzu.

  • Fügen Sie ein Steuerelement hinzu, das auf einem systemeigenen Inhaltssteuerelement in dem Dokument basiert.

Dynamisch erstellte Inhaltssteuerelemente werden beim Schließen des Dokuments nicht im Dokument beibehalten. Ein systemeigenes Inhaltssteuerelement bleibt jedoch im Dokument. Sie können ein Inhaltssteuerelement neu erstellen, das auf einem systemeigenen Inhaltssteuerelement basiert, wenn das Dokument das nächste Mal geöffnet wird. Weitere Informationen hierzu finden Sie unter Beibehalten von dynamischen Steuerelementen in Office-Dokumenten.

Weitere Informationen zum Generieren von Hostelementen in Projekten auf Anwendungsebene finden Sie unter Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit.

Tipp

Erstellen Sie ein ContentControl-Objekt, um einem Dokument in einem Word 2010-Projekt ein Kontrollkästchen-Inhaltssteuerelement hinzuzufügen. Weitere Informationen finden Sie unter Inhaltssteuerelemente.

So fügen Sie ein Inhaltssteuerelement bei der aktuellen Auswahl hinzu

  • Verwenden Sie eine ControlCollection-Methode mit dem Namen Add<control class> (wobei control class der Klassenname des Inhaltssteuerelements ist, das Sie hinzufügen möchten, z. B. AddRichTextContentControl) und mit einem einzelnen Parameter für den Namen des neuen Steuerelements.

    Im folgenden Codebeispiel wird die ControlCollection.AddRichTextContentControl(String)-Methode verwendet, um ein neues RichTextContentControl am Anfang des aktiven Dokuments einzufügen. Zum Ausführen dieses Codes fügen Sie den Code zur ThisAddIn-Klasse im Projekt hinzu, und rufen Sie im ThisAddIn_Startup-Ereignishandler die AddRichTextControlAtSelection-Methode auf.

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

So fügen Sie ein Inhaltssteuerelement in einem angegebenen Bereich hinzu

  • Verwenden Sie eine ControlCollection-Methode mit dem Namen Add<control class> (wobei control class der Name der Inhaltssteuerelementklasse ist, die Sie hinzufügen möchten, z. B. AddRichTextContentControl) und mit einem Microsoft.Office.Interop.Word.Range-Parameter.

    Im folgenden Codebeispiel wird die ControlCollection.AddRichTextContentControl(Range, String)-Methode verwendet, um ein neues RichTextContentControl am Anfang des aktiven Dokuments einzufügen. Zum Ausführen dieses Codes fügen Sie den Code zur ThisAddIn-Klasse im Projekt hinzu, und rufen Sie im ThisAddIn_Startup-Ereignishandler die AddRichTextControlAtRange-Methode auf.

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

So fügen Sie ein Inhaltssteuerelement hinzu, das auf einem systemeigenen Inhaltssteuerelement basiert

  • Verwenden Sie eine ControlCollection-Methode mit dem Namen Add<control class> (wobei control class der Name der Inhaltssteuerelementklasse ist, die Sie hinzufügen möchten, z. B. AddRichTextContentControl) und mit einem Microsoft.Office.Interop.Word.ContentControl-Parameter.

    Im folgenden Codebeispiel wird die ControlCollection.AddRichTextContentControl(ContentControl, String)-Methode verwendet, um ein neues RichTextContentControl-Element für jedes systemeigene Rich-Text-Steuerelement im Dokument zu erstellen, nachdem das Dokument geöffnet wird. Wenn Sie diesen Code ausführen möchten, fügen Sie den Code der ThisAddIn-Klasse im Projekt hinzu.

    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# müssen Sie auch den Application_DocumentOpen-Ereignishandler an das DocumentOpen-Ereignis anfügen.

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

Siehe auch

Konzepte

Automatisieren von Word mithilfe von erweiterten Objekten

Übersicht über Hostelemente und Hoststeuerelemente

Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit

Programmgesteuerte Einschränkungen von Hostelementen und Hoststeuerelementen

Hilfsmethoden für Hoststeuerelemente

Weitere Ressourcen

Programmieren von Add-Ins auf Anwendungsebene

Programmieren von Anpassungen auf Dokumentebene