Share via


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

Aktualisiert: Juli 2008

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office.

Projekttyp

  • Projekte auf Dokumentebene

  • Projekte auf Anwendungsebene

Microsoft Office-Version

  • Word 2007

Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

In Projekten auf Dokumentebene können Sie dem Dokument im Projekt Inhaltssteuerelemente zur Entwurfszeit oder zur Laufzeit hinzufügen. Ab Visual Studio 2008 Service Pack 1 (SP1) können Sie jedem beliebigen Dokument Inhaltssteuerelemente zur Laufzeit mit einem Add-In auf Anwendungsebene für Word 2007 hinzufügen.

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:

Hinweis:

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.

Hinweis:

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.

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 in der Multifunktionsleiste auf die Registerkarte Entwickler.

    Hinweis:

    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 Visual Studio Tools for Office-Inhaltssteuerelemente werden beim Schließen des Dokuments nicht im Dokument beibehalten. Ein systemeigenes Inhaltssteuerelement bleibt jedoch im Dokument. Sie können ein Visual Studio Tools for Office-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 Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit.

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

Ab SP1 können Sie 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 Visual Studio Tools for Office-Inhaltssteuerelemente werden beim Schließen des Dokuments nicht im Dokument beibehalten. Ein systemeigenes Inhaltssteuerelement bleibt jedoch im Dokument. Sie können ein Visual Studio Tools for Office-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.

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

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

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

Übersicht über Hostelemente und Hoststeuerelemente

Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit

Programmgesteuerte Einschränkungen von Hostelementen und Hoststeuerelementen

Programmieren von Add-Ins auf Anwendungsebene

Programmieren von Anpassungen auf Dokumentebene

Hilfsmethoden für Hoststeuerelemente

Weitere Ressourcen

Word-Hoststeuerelemente

Änderungsverlauf

Date

Versionsgeschichte

Grund

Juli 2008

Neue Prozedur für Add-Ins auf Anwendungsebene wurde hinzugefügt.

SP1-Featureänderung.