Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit
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. Projekte auf Dokumentebene
Projekte auf Anwendungsebene
Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp. |
Sie können zur Laufzeit Steuerelemente zu Microsoft Office Word-Dokumenten und Microsoft Office Excel-Arbeitsmappen hinzufügen und auch entfernen. Steuerelemente, die Sie Dokumenten zur Laufzeit hinzufügen, werden als dynamische Steuerelemente bezeichnet. Ab Visual Studio 2008 Service Pack 1 (SP1) können Sie Dokumenten und Arbeitsmappen dynamische Steuerelemente mit den Add-Ins auf Anwendungsebene hinzufügen.
Dieses Thema enthält folgende Informationen:
Verwalten von Steuerelementen zur Laufzeit mit den Steuerelementauflistungen
Hinzufügen von Hoststeuerelementen zu Dokumenten
Hinzufügen von Windows Forms-Steuerelementen zu Dokumenten
Verwalten von Steuerelementen zur Laufzeit mit den Steuerelementauflistungen
Um Steuerelemente zur Laufzeit hinzuzufügen, abzurufen oder zu entfernen, verwenden Sie Hilfsmethoden der Microsoft.Office.Tools.Excel.ControlCollection-Klasse und der Microsoft.Office.Tools.Word.ControlCollection-Klasse.
Auf welche Weise Sie auf die Steuerelementauflistungen zugreifen, hängt vom Typ des Projekts ab, das Sie entwickeln:
In einem Projekt auf Dokumentebene für Excel verwenden Sie die Worksheet.Controls-Eigenschaft der Klassen Sheet1, Sheet2 und Sheet3. Weitere Informationen zu diesen Klassen finden Sie unter Arbeitsblatthostelement.
In einem Projekt auf Dokumentebene für Word verwenden Sie die Document.Controls-Eigenschaft der ThisDocument-Klasse. Weitere Information über diese Klasse finden Sie unter Dokumenthostelement.
In einem Projekt auf Anwendungsebene für Excel oder Word verwenden Sie die Controls-Eigenschaft von Microsoft.Office.Tools.Excel.Worksheet oder Microsoft.Office.Tools.Word.Document, die Sie zur Laufzeit generieren. Weitere Informationen über das Generieren dieser Objekte zur Laufzeit finden Sie unter Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit.
Hinzufügen von Steuerelementen
Die Microsoft.Office.Tools.Excel.ControlCollection-Klasse und die Microsoft.Office.Tools.Word.ControlCollection-Klasse umfassen Hilfsmethoden, die Sie verwenden können, um Dokumenten und Arbeitsmappen Hoststeuerelemente und die gängigsten Windows Forms-Steuerelemente hinzuzufügen. Jeder Methodenname besitzt das Format Add<control class>, wobei control class der Klassenname des Steuerelements ist, das Sie hinzufügen möchten. Wenn Sie dem Dokument zum Beispiel ein NamedRange-Steuerelement hinzufügen möchten, verwenden Sie dazu die AddNamedRange-Methode. Eine vollständige Liste von Hilfsmethoden finden Sie unter Hilfsmethoden für Hoststeuerelemente und unter Hilfsmethoden für Windows Forms-Steuerelemente.
Im folgenden Codebeispiel wird in einem Projekt auf Dokumentebene für Excel Sheet1 ein NamedRange hinzugefügt.
Dim range1 As Excel.Range = Globals.Sheet1.Range("A1", "D5")
Dim namedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _
Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource")
Excel.Range range1 = Globals.Sheet1.Range["A1", "D5"];
Microsoft.Office.Tools.Excel.NamedRange namedRange1 =
Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource");
Zugreifen auf Steuerelemente und Löschen von Steuerelementen
Sie können die Controls-Eigenschaft von Microsoft.Office.Tools.Excel.Worksheet oder Microsoft.Office.Tools.Word.Document verwenden, um alle Steuerelemente in Ihrem Dokument zu durchlaufen, einschließlich der Steuerelemente, die Sie zur Entwurfszeit hinzugefügt haben. Steuerelemente, die Sie zur Entwurfszeit hinzufügen, werden auch als statische Steuerelemente bezeichnet.
Sie können dynamische Steuerelemente entfernen, indem Sie die Delete-Methode des Steuerelements oder die Remove-Methode der jeweiligen Controls-Auflistung aufrufen. Im folgenden Codebeispiel wird die Remove-Methode verwendet, um einen NamedRange aus Sheet1 in einem Projekt auf Dokumentebene für Excel zu entfernen.
Globals.Sheet1.Controls.Remove("ChartSource")
Globals.Sheet1.Controls.Remove("ChartSource");
Zur Laufzeit können Sie keine statischen Steuerelemente entfernen. Wenn Sie versuchen, mit der Delete-Methode oder der Remove-Methode ein statisches Steuerelement zu entfernen, wird eine CannotRemoveControlException ausgelöst.
Hinweis: |
---|
Entfernen Sie keine Steuerelemente programmgesteuert im Shutdown-Ereignishandler des Dokuments. Die Benutzeroberflächenelemente des Dokuments sind nicht mehr verfügbar, wenn das Shutdown-Ereignis ausgelöst wird. Wenn Sie vor dem Schließen des Dokuments Steuerelemente entfernen möchten, fügen Sie dem Code einen Ereignishandler für ein anderes Element hinzu, beispielsweise Document.BeforeClose bzw. Document.BeforeSave für Word oder Workbook.BeforeClose bzw. Workbook.BeforeSave für Excel. |
Hinzufügen von Hoststeuerelementen zu Dokumenten
Wenn Sie Dokumenten programmgesteuert Steuerelemente hinzufügen, müssen Sie einen Namen zur eindeutigen Identifikation des Steuerelements angeben, und Sie müssen angeben, wo das Steuerelement dem Dokument hinzugefügt werden soll. Genaue Anweisungen finden Sie in den folgenden Themen:
Gewusst wie: Hinzufügen von ListObject-Steuerelementen zu Arbeitsblättern
Gewusst wie: Hinzufügen von NamedRange-Steuerelementen zu Arbeitsblättern
Gewusst wie: Hinzufügen von Diagrammsteuerelementen zu Arbeitsblättern
Gewusst wie: Hinzufügen von Inhaltssteuerelementen zu Word-Dokumenten
Gewusst wie: Hinzufügen von Bookmark-Steuerelementen zu Word-Dokumenten
Weitere Informationen zu Hoststeuerelementen finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente.
Beim Speichern und Schließen eines Dokuments werden alle dynamisch erstellten Hoststeuerelemente von ihren Ereignissen getrennt und verlieren ihre Datenbindungsfunktion. Sie können der Projektmappe Code hinzufügen, damit die Hoststeuerelemente beim erneuten Öffnen des Dokuments neu erstellt werden. Weitere Informationen hierzu finden Sie unter Beibehalten von dynamischen Steuerelementen in Office-Dokumenten.
Hinweis: |
---|
Für die folgenden Hoststeuerelemente werden keine Hilfsmethoden bereitgestellt, da sie Dokumenten nicht programmgesteuert hinzugefügt werden können: XmlMappedRange, XMLNode und XMLNodes. |
Hinzufügen von Windows Forms-Steuerelementen zu Dokumenten
Wenn Sie einem Dokument programmgesteuert ein Windows Forms-Steuerelement hinzufügen, müssen Sie die Position des Steuerelements und einen Namen zur eindeutigen Identifikation des Steuerelements angeben. Visual Studio Tools for Office stellt Hilfsmethoden für jedes Steuerelement bereit. Diese Hilfsmethoden sind überladen, d. h., Sie können entweder einen Bereich oder die genauen Koordinaten für die Position des Steuerelements übergeben. Ausführliche Anweisungen finden Sie unter Gewusst wie: Hinzufügen von Windows Forms-Steuerelementen zu Office-Dokumenten.
Beim Speichern und Schließen eines Dokuments werden die dynamisch erstellten Windows Forms-Steuerelemente aus dem Dokument entfernt. Sie können der Projektmappe Code hinzufügen, damit die Steuerelemente beim erneuten Öffnen des Dokuments neu erstellt werden. Wenn Sie dynamische Windows Forms-Steuerelemente mit einem Add-In auf Anwendungsebene erstellen, bleiben die ActiveX-Wrapper für die Steuerelemente im Dokument zurück. Weitere Informationen hierzu finden Sie unter Beibehalten von dynamischen Steuerelementen in Office-Dokumenten.
Hinweis: |
---|
Das programmgesteuerte Hinzufügen von Windows Forms-Steuerelementen zu geschützten Dokumenten ist nicht möglich. Wenn Sie den Schutz eines Word-Dokuments oder einer Excel-Arbeitsmappe programmgesteuert aufheben, um ein Steuerelement hinzuzufügen, müssen Sie zusätzlichen Code zum Entfernen des ActiveX-Wrappers des Steuerelements beim Schließen des Dokuments schreiben. Der ActiveX-Wrapper des Steuerelements wird nicht automatisch aus geschützten Dokumenten gelöscht. |
Hinzufügen benutzerdefinierter Steuerelemente
Wenn Sie ein System.Windows.Forms.Control hinzufügen möchten, das von den verfügbaren Hilfsmethoden nicht unterstützt wird (z. B. ein benutzerdefiniertes Steuerelement), verwenden Sie die folgenden Methoden:
Verwenden Sie für Excel eine der AddControl()-Methoden der Microsoft.Office.Tools.Excel.ControlCollection-Klasse.
Verwenden Sie für Word eine der AddControl()-Methoden der Microsoft.Office.Tools.Word.ControlCollection-Klasse.
Um das Steuerelement hinzuzufügen, übergeben Sie das System.Windows.Forms.Control, eine Position für das Steuerelement und einen Namen, durch den das Steuerelement gegenüber der AddControl-Methode eindeutig identifiziert wird. Für Excel gibt diese Methode ein OLEObject zurück. Für Word gibt diese Methode ein OLEControl zurück. Diese Objekte definieren, wie das Steuerelement mit dem Arbeitsblatt oder dem Dokument interagiert.
Im folgenden Codebeispiel wird veranschaulicht, wie Sie die AddControl(Control, Range, String)-Methode verwenden, um einem Arbeitsblatt ein benutzerdefiniertes Steuerelement dynamisch hinzuzufügen. In diesem Beispiel hat das Benutzersteuerelement den Namen UserControl1 und Range den Namen range1. Bei diesem Beispiel wird davon ausgegangen, dass es von einer der Sheetn-Klassen in einem Projekt auf Dokumentebene für Excel ausgeführt wird.
Dim customControl As New UserControl1()
Dim dynamicControl As Microsoft.Office.Tools.Excel.OLEObject = _
Me.Controls.AddControl(customControl, range1, "dynamic")
UserControl1 customControl = new UserControl1();
Microsoft.Office.Tools.Excel.OLEObject dynamicControl =
this.Controls.AddControl(customControl, range1, "dynamic");
Verwenden von Membern benutzerdefinierter Steuerelemente
Nachdem Sie einem Arbeitsblatt oder Dokument mit einer der AddControl-Methoden ein Steuerelement hinzugefügt haben, verfügen Sie über zwei verschiedene Steuerelementobjekte:
Das System.Windows.Forms.Control, das das benutzerdefinierte Steuerelement darstellt.
Das OLEObject oder OLEControl, das das Steuerelement darstellt, nachdem es dem Arbeitsblatt oder dem Dokument hinzugefügt wurde.
Viele Eigenschaften und Methoden werden von diesen Steuerelementen gemeinsam verwendet. Es ist wichtig, dass Sie auf diese Methoden und Eigenschaften über das entsprechende Steuerelement zugreifen:
Um auf Eigenschaften und Methoden zuzugreifen, die nur zu dem Benutzersteuerelement gehören, verwenden Sie das System.Windows.Forms.Control.
Um auf Eigenschaften und Methoden zuzugreifen, die von den Steuerelementen gemeinsam genutzt werden, verwenden Sie das OLEObject oder das OLEControl.
Wenn Sie über ein System.Windows.Forms.Control auf eine gemeinsam verwendete Methode oder Eigenschaft zugreifen, kann dieser Versuch fehlschlagen, ohne dass Sie diesbezüglich eine Warnung oder Benachrichtigung erhalten, oder er kann zu ungültigen Ergebnissen führen. Verwenden Sie immer Methoden oder Eigenschaften des OLEObject oder des OLEControl. Nur wenn die benötigte Methode oder Eigenschaft nicht verfügbar ist, sollten Sie auf das System.Windows.Forms.Control verweisen.
Beispielsweise verfügen sowohl die OLEObject-Klasse als auch die System.Windows.Forms.Control-Klasse über eine Top-Eigenschaft. Um den Abstand zwischen dem oberen Rand des Steuerelements und dem oberen Rand des Dokuments abzurufen oder festzulegen, verwenden Sie die Top-Eigenschaft des OLEObject und nicht die Top-Eigenschaft des System.Windows.Forms.Control.
' Property is set in relation to the document.
dynamicControl.Top = 100
' Property is set in relation to the container control.
customControl.Top = 100
// Property is set in relation to the document.
dynamicControl.Top = 100;
// Property is set in relation to the container control.
customControl.Top = 100;
Siehe auch
Aufgaben
Gewusst wie: Hinzufügen von ListObject-Steuerelementen zu Arbeitsblättern
Gewusst wie: Hinzufügen von NamedRange-Steuerelementen zu Arbeitsblättern
Gewusst wie: Hinzufügen von Diagrammsteuerelementen zu Arbeitsblättern
Gewusst wie: Hinzufügen von Inhaltssteuerelementen zu Word-Dokumenten
Gewusst wie: Hinzufügen von Bookmark-Steuerelementen zu Word-Dokumenten
Gewusst wie: Hinzufügen von Windows Forms-Steuerelementen zu Office-Dokumenten
Konzepte
Beibehalten von dynamischen Steuerelementen in Office-Dokumenten
Hilfsmethoden für Hoststeuerelemente
Hilfsmethoden für Windows Forms-Steuerelemente
Übersicht über Windows Forms-Steuerelemente in Office-Dokumenten
Referenz
Weitere Ressourcen
Steuerelemente für Office-Dokumente
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
---|---|---|
Juli 2008 |
Informationen über das Hinzufügen von Steuerelementen zu Dokumenten mit Add-Ins auf Anwendungsebene hinzugefügt. |
SP1-Featureänderung. |