Поделиться через


Пошаговое руководство. Привязка к данным из службы в проекте уровня приложения

Обновлен: Июль 2008

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office.

Тип проекта

  • Проекты уровня приложения

Версия Microsoft Office

  • Word 2007

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

Начиная с Visual Studio 2008 с пакетом обновления 1 (SP1), можно привязать данные к элементам управления ведущего приложения в проектах уровня приложения. Это пошаговое руководство показывает, как добавлять элементы управления в документ Microsoft Office Word, привязывать элементы управления к данным, полученным из Службы управления содержимым MSDN и реагировать на события во время выполнения.

В данном пошаговом руководстве рассмотрены следующие задачи:

  • Добавление RichTextContentControl элемента управления в документ во время выполнения.

  • Привязка элемента управления RichTextContentControl к данным, полученным из веб-службы.

  • Реагирование на событие Entering элемента управления RichTextContentControl.

Cc668204.alert_note(ru-ru,VS.90).gifПримечание.

На вашем компьютере названия некоторых элементов интерфейса пользователя 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.

Создание нового проекта

Добавление веб-службы

Для этого пошагового руководства используйте веб-службу, называющуюся Службой управления содержимым MSDN. Эта веб-служба возвращает сведения из указанной статьи MSDN в виде строки XML или обычного текста. Позднее будет показано, как отобразить возвращенные сведения в элементе управления содержимым.

Добавление Службы управления содержимым MSDN в проект

  1. В меню Данные выберите команду Добавить новый источник данных.

  2. В Мастере настройки источников данных выберите Служба, а затем нажмите кнопку Далее.

  3. В поле Адрес введите следующий URL-адрес:

    http://services.msdn.microsoft.com/ContentServices/ContentService.asmx

  4. Щелкните Перейти.

  5. В поле Пространство имен введите ContentService и нажмите кнопку ОК.

  6. В диалоговом окне мастера добавления ссылок нажмите кнопку Готово.

Добавление элемента управления содержимым и привязка к данным во время выполнения

В проектах уровня приложения элементы управления добавляются и привязываются во время выполнения. Для этого пошагового руководства настройте элемент управления содержимым для извлечения данных от веб-службы, когда пользователь щелкает внутри элемента управления.

Добавление элемент управления содержимым и привязка к данным

  1. В классе 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;
    
  2. Добавьте следующий метод в класс 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.";
    }
    
  3. Добавьте следующий метод в класс 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);
    
    }
    
  4. Создайте обработчик событий, чтобы извлечь документ библиотеки 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);
    }
    
  5. Вызовите методы 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. При щелчке в элементе управления его текст меняется.

Проверка надстройки

  1. Нажмите клавишу F5.

  2. Щелкните внутри элемента управления содержимым.

    Данные загружаются из Службы управления содержимым MSDN и отображаются внутри элемента управления содержимым.

См. также

Основные понятия

Привязка данных к элементам управления

Журнал изменений

Дата

Журнал

Причина

Июль 2008

Добавлен раздел.

Изменение функции SP1.