逐步解說:在應用程式層級專案中繫結至服務資料
更新: 2008 年 7 月
適用於 |
---|
本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。 專案類型
Microsoft Office 版本
如需詳細資訊,請參閱依應用程式和專案類型提供的功能。 |
從 Visual Studio 2008 Service Pack 1 (SP1) 開始,您可以透過應用程式層級專案,將資料繫結至主控制項。本逐步解說示範如何在執行階段,將控制項加入至 Microsoft Office Word 文件、將控制項繫結至擷取自 MSDN 內容服務的資料,以及回應事件。
這個逐步解說將說明下列工作:
在執行階段將 RichTextContentControl 控制項加入至文件。
將 RichTextContentControl 控制項繫結至 Web 服務的資料。
回應 RichTextContentControl 控制項的 Entering 事件。
![]() |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
必要條件
您需要下列元件才能完成此逐步解說:
Visual Studio Tools for Office (Visual Studio 2008 Professional 和 Visual Studio Team System 的選擇性元件)。
Visual Studio Tools for Office 預設會與列出的 Visual Studio 版本一起安裝。若要查看是否已安裝,請參閱安裝 Visual Studio Tools for Office。
Word 2007。
建立新專案
首先,必須建立 Word 增益集專案。
若要建立新的專案
使用 Visual Basic 或 C#,建立名為 MSDN 內容服務的 [Word 2007 增益集] 專案。
如需詳細資訊,請參閱 HOW TO:建立 Visual Studio Tools for Office 專案。
Visual Studio 隨即開啟 ThisAddIn.vb 或 ThisAddIn.cs 檔案,並將專案加入至 [方案總管]。
加入 Web 服務
在本逐步解說中,請使用名為「MSDN 內容服務」的 Web 服務。這個 Web 服務會以 XML 字串或純文字的形式,傳回指定之 MSDN 文件的資訊。後面的步驟將會說明如何顯示透過內容控制項所傳回的資訊。
若要將 MSDN 內容服務加入至專案
在 [資料] 功能表上,按一下 [加入新資料來源]。
在 [資料來源組態精靈] 中,按一下 [服務],然後按 [下一步]。
在 [位址] 欄位中輸入下列 URL:
http://services.msdn.microsoft.com/ContentServices/ContentService.asmx
按一下 [移至]。
在 [命名空間] 欄位中,輸入 ContentService,然後按一下 [確定]。
在 [加入參考精靈] 對話方塊中,按一下 [完成]。
在執行階段加入內容控制項並繫結至資料
透過應用程式層級專案,您可以在執行階段加入並繫結控制項。在本逐步解說中,請將內容控制項設定為每當使用者在控制項內按一下時,就擷取 Web 服務中的資料。
若要加入內容控制項並繫結至資料
在 ThisAddIn 類別中,宣告 MSDN 內容服務、內容控制項及資料繫結的變數。
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;
將下列方法加入至 ThisAddIn 類別。此方法會在現用文件開頭建立內容控制項。
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."; }
將下列方法加入至 ThisAddIn 類別。此方法會初始化建立要求並傳送至 Web 服務時的必要物件。
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); }
建立事件處理常式,以便在使用者按一下內容控制項內部時擷取有關內容控制項的 MSDN Library 文件,並將資料繫結至此內容控制項。
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); }
從 ThisAddIn_Startup 方法呼叫 AddRichTextControlAtRange 和 InitializeServiceObjects 方法。C# 程式設計人員,請加入事件處理常式。
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); }
測試增益集
當您開啟 Word 時,RichTextContentControl 控制項隨即出現。當您在控制項內按一下時,其中的文字會改變。
若要測試增益集
請按 F5。
在內容控制項內按一下。
資訊隨即從 MSDN 內容服務下載,並顯示在內容控制項中。
請參閱
概念
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2008 年 7 月 |
加入主題。 |
SP1 功能變更。 |