Exemplarische Vorgehensweise: Binden an Daten aus einem Dienst in einem Projekt auf Anwendungsebene
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
Microsoft Office-Version
Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp. |
Ab Visual Studio 2008 Service Pack 1 (SP1) können Daten an Hoststeuerelemente in Projekten auf Anwendungsebene gebunden werden. In dieser exemplarischen Vorgehensweise werden das Hinzufügen von Steuerelementen zu einem Microsoft Office Word-Dokument, das Binden der Steuerelemente an von MSDN Content Service abgerufene Daten sowie die Reaktion auf Ereignisse zur Laufzeit veranschaulicht.
In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:
Hinzufügen eines RichTextContentControl-Steuerelements zu einem Dokument zur Laufzeit.
Binden des RichTextContentControl-Steuerelements an Daten von einem Webdienst.
Reagieren auf das Entering-Ereignis eines RichTextContentControl-Steuerelements.
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. |
Vorbereitungsmaßnahmen
Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:
Visual Studio Tools for Office (eine optionale Komponente von Visual Studio 2008 Professional und Visual Studio Team System).
Visual Studio Tools for Office wird standardmäßig mit den aufgeführten Versionen von Visual Studio installiert. Wie Sie überprüfen können, ob die Software installiert ist, erfahren Sie in Installieren von Visual Studio Tools for Office.
Word 2007.
Erstellen eines neuen Projekts
Zunächst muss ein Add-In-Projekt für Word erstellt werden.
So erstellen Sie ein neues Projekt
Erstellen Sie in Visual Basic oder C# ein Word 2007-Add-in-Projekt mit dem Namen MSDN Content Service.
Weitere Informationen hierzu finden Sie unter Gewusst wie: Erstellen von Visual Studio Tools for Office-Projekte.
Visual Studio öffnet die Datei ThisAddIn.vb oder ThisAddIn.cs und fügt dem Projektmappen-Explorer das Projekt hinzu.
Hinzufügen eines Webdiensts
Verwenden Sie für diese exemplarische Vorgehensweise den Webdienst mit dem Namen MSDN Content Service. Dieser Webdienst gibt Informationen aus einem angegebenen MSDN-Artikel in Form einer XML-Zeichenfolge oder als Nur-Text zurück. In einem späteren Schritt wird dargestellt, wie die zurückgegebenen Informationen in einem Inhaltssteuerelement angezeigt werden.
So fügen Sie dem Projekt MSDN Content Service hinzu
Klicken Sie im Menü Daten auf Neue Datenquelle hinzufügen.
Klicken Sie im Assistent zum Konfigurieren von Datenquellen auf Dienst und dann auf Weiter.
Geben Sie im Feld Adresse die folgende URL ein:
http://services.msdn.microsoft.com/ContentServices/ContentService.asmx
Klicken Sie auf Weiter.
Geben Sie im Feld Namespace die Zeichenfolge ContentService ein, und klicken Sie auf OK.
Klicken Sie im Dialogfeld Assistent zum Hinzufügen von Verweisen auf Fertig stellen.
Hinzufügen eines Inhaltssteuerelements und Binden an Daten zur Laufzeit
In Projekten auf Anwendungsebene werden Steuerelemente zur Laufzeit hinzugefügt und gebunden. Konfigurieren Sie das Inhaltssteuerelement für diese exemplarische Vorgehensweise so, dass Daten vom Webdienst abgerufen werden, wenn der Benutzer auf das Steuerelement klickt.
So fügen Sie ein Inhaltssteuerelement hinzu und binden dieses an Daten
Deklarieren Sie in der ThisAddIn-Klasse die Variablen für MSDN Content Service, das Inhaltssteuerelement und die Datenbindung.
Private request As ContentService.getContentRequest Private proxy As ContentService.ContentServicePortTypeClient Private document As ContentService.requestedDocument() Private response As ContentService.getContentResponse Private appId As ContentService.appId Private WithEvents richTextContentControl _ As Microsoft.Office.Tools.Word.RichTextContentControl Private components As System.ComponentModel.Container Private primaryDocumentsBindingSource As _ System.Windows.Forms.BindingSource
private ContentService.getContentRequest request; private ContentService.ContentServicePortTypeClient proxy; private ContentService.requestedDocument[] document; private ContentService.getContentResponse response; private ContentService.appId appId; private Microsoft.Office.Tools.Word.RichTextContentControl richTextContentControl; private System.ComponentModel.Container components; private System.Windows.Forms.BindingSource primaryDocumentsBindingSource;
Fügen Sie der ThisAddIn-Klasse die folgende Methode hinzu. Diese Methode erstellt am Anfang des aktiven Dokuments ein Inhaltssteuerelement.
Private Sub AddRichTextControlAtRange() Dim currentDocument As Word.Document = Me.Application.ActiveDocument currentDocument.Paragraphs(1).Range.InsertParagraphBefore() Dim extendedDocument As Document = currentDocument.GetVstoObject() richTextContentControl = _ extendedDocument.Controls.AddRichTextContentControl _ (currentDocument.Paragraphs(1).Range, "richTextControl2") richTextContentControl.PlaceholderText = _ "Click here to download MSDN Library information about content controls." End Sub
private void AddRichTextControlAtRange() { Word.Document currentDocument = this.Application.ActiveDocument; currentDocument.Paragraphs[1].Range.InsertParagraphBefore(); Document extendedDocument = currentDocument.GetVstoObject(); richTextContentControl = extendedDocument.Controls.AddRichTextContentControl( currentDocument.Paragraphs[1].Range, "richTextContentControl"); richTextContentControl.PlaceholderText = "Click here to download MSDN Library information about content controls."; }
Fügen Sie der ThisAddIn-Klasse die folgende Methode hinzu. Diese Methode initialisiert die Objekte, die zum Erstellen und Senden einer Anforderung an den Webdienst erforderlich sind.
Private Sub InitializeServiceObjects() request = New ContentService.getContentRequest() proxy = New ContentService.ContentServicePortTypeClient() document = New ContentService.requestedDocument(0) {} response = New ContentService.getContentResponse() appId = New ContentService.appId() components = New System.ComponentModel.Container() primaryDocumentsBindingSource = _ New System.Windows.Forms.BindingSource(components) End Sub
private void InitializeServiceObjects() { request = new ContentService.getContentRequest(); proxy = new ContentService.ContentServicePortTypeClient(); document = new ContentService.requestedDocument[1]; response = new ContentService.getContentResponse(); appId = new ContentService.appId(); components = new System.ComponentModel.Container(); primaryDocumentsBindingSource = new System.Windows.Forms.BindingSource(this.components); }
Erstellen Sie einen Ereignishandler, um das MSDN Library-Dokument über Inhaltssteuerelemente abzurufen, wenn ein Benutzer darauf klickt, und um Daten an das Inhaltssteuerelement zu binden.
Private Sub richTextContentControl_Entering _ (ByVal sender As Object, ByVal e As ContentControlEnteringEventArgs) _ Handles richTextContentControl.Entering document(0) = New ContentService.requestedDocument() With document(0) .type = ContentService.documentTypes.primary .selector = "Mtps.Xhtml" End With With request .contentIdentifier = "ed59e522-dd6e-4c82-8d49-f5dbcfcc950d" .locale = "en-us" .version = "VS.90" .requestedDocuments = document End With response = proxy.GetContent(appId, request) primaryDocumentsBindingSource.DataSource = _ response.primaryDocuments(0).Any.InnerText richTextContentControl.DataBindings.Add( _ "Text", _ primaryDocumentsBindingSource.DataSource, _ "", _ True, _ System.Windows.Forms.DataSourceUpdateMode.OnValidation) End Sub
void richTextContentControl_Entering(object sender, ContentControlEnteringEventArgs e) { document[0] = new ContentService.requestedDocument(); document[0].type = ContentService.documentTypes.primary; document[0].selector = "Mtps.Xhtml"; request.contentIdentifier = "ed59e522-dd6e-4c82-8d49-f5dbcfcc950d"; request.locale = "en-us"; request.version = "VS.90"; request.requestedDocuments = document; response = proxy.GetContent(appId, request); primaryDocumentsBindingSource.DataSource = response.primaryDocuments[0].Any.InnerText; richTextContentControl.DataBindings.Add( "Text", primaryDocumentsBindingSource.DataSource, "", true, System.Windows.Forms.DataSourceUpdateMode.OnValidation); }
Rufen Sie in der ThisAddIn_Startup-Methode die AddRichTextControlAtRange-Methode und die InitializeServiceObjects-Methode auf. C#-Programmierer müssen einen Ereignishandler hinzufügen.
Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup AddRichTextControlAtRange() InitializeServiceObjects() End Sub
private void ThisAddIn_Startup(object sender, System.EventArgs e) { AddRichTextControlAtRange(); InitializeServiceObjects(); this.richTextContentControl.Entering += new EventHandler<ContentControlEnteringEventArgs> (richTextContentControl_Entering); }
Testen des Add-Ins
Beim Öffnen von Word wird das RichTextContentControl-Steuerelement angezeigt. Der Text im Steuerelement ändert sich, wenn Sie darauf klicken.
So testen Sie das Add-In
Drücken Sie F5.
Klicken Sie auf das Inhaltssteuerelement.
Informationen werden vom MSDN Content Service heruntergeladen und im Inhaltssteuerelement angezeigt.
Siehe auch
Konzepte
Binden von Daten an Steuerelemente
Änderungsprotokoll
Date |
Versionsgeschichte |
Grund |
---|---|---|
Juli 2008 |
Thema hinzugefügt. |
SP1-Featureänderung. |