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:
Fügen Sie ein Inhaltssteuerelement von der Registerkarte Word-Steuerelemente der Toolbox hinzu.
Fügen Sie dem Dokument ein Inhaltssteuerelement genauso hinzu, wie Sie ein systemeigenes Inhaltssteuerelement in Word hinzufügen.
Ziehen Sie ein Inhaltssteuerelement vom Fenster Datenquellen in das Dokument. Diese Vorgehensweise ist hilfreich, wenn Sie das Steuerelement zum Zeitpunkt der Erstellung an Daten binden möchten. Weitere Informationen finden Sie unter Gewusst wie: Auffüllen von Dokumenten mit Daten von Objekten und unter Gewusst wie: Auffüllen von Dokumenten mit Daten aus einer Datenbank.
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
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.
Öffnen Sie die Toolbox, und klicken Sie auf die Registerkarte Word-Steuerelemente.
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
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.
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.
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