Пошаговое руководство. Привязка к данным из службы в проекте уровня приложения
Обновлен: Июль 2008
Применение |
---|
Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
Начиная с Visual Studio 2008 с пакетом обновления 1 (SP1), можно привязать данные к элементам управления ведущего приложения в проектах уровня приложения. Это пошаговое руководство показывает, как добавлять элементы управления в документ Microsoft Office Word, привязывать элементы управления к данным, полученным из Службы управления содержимым MSDN и реагировать на события во время выполнения.
В данном пошаговом руководстве рассмотрены следующие задачи:
Добавление RichTextContentControl элемента управления в документ во время выполнения.
Привязка элемента управления RichTextContentControl к данным, полученным из веб-службы.
Реагирование на событие Entering элемента управления RichTextContentControl.
Примечание. |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя 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 для Office.
Word 2007.
Создание нового проекта
Для начала следует создать проект надстройки Word.
Создание нового проекта
Создайте проект Надстройка Word 2007 с именем Служба управления содержимым MSDN в Visual Basic или C#.
Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Visual Studio Tools for Office.
Visual Studio открывает файл ThisAddIn.vb или ThisAddIn.cs и добавляет проект в Обозреватель событий.
Добавление веб-службы
Для этого пошагового руководства используйте веб-службу, называющуюся Службой управления содержимым MSDN. Эта веб-служба возвращает сведения из указанной статьи MSDN в виде строки XML или обычного текста. Позднее будет показано, как отобразить возвращенные сведения в элементе управления содержимым.
Добавление Службы управления содержимым MSDN в проект
В меню Данные выберите команду Добавить новый источник данных.
В Мастере настройки источников данных выберите Служба, а затем нажмите кнопку Далее.
В поле Адрес введите следующий URL-адрес:
http://services.msdn.microsoft.com/ContentServices/ContentService.asmx
Щелкните Перейти.
В поле Пространство имен введите ContentService и нажмите кнопку ОК.
В диалоговом окне мастера добавления ссылок нажмите кнопку Готово.
Добавление элемента управления содержимым и привязка к данным во время выполнения
В проектах уровня приложения элементы управления добавляются и привязываются во время выполнения. Для этого пошагового руководства настройте элемент управления содержимым для извлечения данных от веб-службы, когда пользователь щелкает внутри элемента управления.
Добавление элемент управления содержимым и привязка к данным
В классе 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. Этот метод создает объекты, нужные для создания запроса и его отправки веб-службе.
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); }
Вызовите методы AddRichTextControlAtRange и InitializeServiceObjects из метода ThisAddIn_Startup. Программистам 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 |
Добавлен раздел. |
Изменение функции SP1. |