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


Пошаговое руководство. Создание и отладка начального шаблона формы с помощью объектной модели InfoPath 2003

В этой теме предоставляется пошаговое руководство по созданию базового шаблона формы InfoPath с управляемым кодом, работающего с объектной моделью, совместимой с InfoPath 2003 и предоставляемой пространством имен Microsoft.Office.Interop.InfoPath.SemiTrust.

Hello World

В следующем примере представлено обучение выводу простого диалогового окна оповещения с помощью метода Alert объектной модели, совместимой с InfoPath 2003.

Создание нового шаблона формы InfoPath, работающего с объектной моделью, совместимой с InfoPath 2003

  1. Создайте новый шаблон формы, работающий с объектной моделью, совместимой с InfoPath 2003, руководствуясь статьей Практическое руководство. Создание шаблона формы с управляемым кодом с помощью объектной модели InfoPath 2003.

  2. Введите имя проекта шаблона формы HelloWorld и сохраните проект.

    Проектная система создаст файлы кода и проекта, а затем откроет пустой шаблон формы в режиме конструктора InfoPath. Теперь можно добавлять обработчики событий.

Добавление обработчика событий OnClick

  1. Щелкните Элементы управления в области задач Задачи конструирования.

  2. Если работа осуществляется в InfoPath с Набор средств Microsoft Visual Studio для приложений (VSTA), то в разделе элементов управления Стандартные щелкните элемент управления Кнопка, чтобы вставить его в представление.

    Если работа осуществляется в Visual Studio 2005 с Набор средств Microsoft Visual Studio 2005 для Microsoft Office System 2007 или Visual Studio 2008 с Visual Studio Tools для Office, то перетащите элемент управления Кнопка из Панели элементов в конструктор форм manifest.xsf [Конструктор].

  3. Дважды щелкните кнопку для открытия диалогового окна Свойства кнопки.

  4. Измените значение параметра Метка на Оповещение.

  5. Измените значение параметра Идентификатор на AlertID.

  6. Щелкните Редактировать код формы.

    Структура обработчика событий OnClick создана, и фокус смещается на редактор кода в VSTA или Visual Studio. Дополнительные сведения о работе с обработчиками событий см. в статье Практическое руководство. Добавление обработчика событий с помощью объектной модели InfoPath 2003.

    Теперь можно добавить код формы для обработчика событий кнопки.

Добавление кода формы для обработчика событий

  1. Введите в обработчике событий OnClick следующий код:

    thisXDocument.UI.Alert("Hello World!");
    
    thisXDocument.UI.Alert("Hello World!")
    

    Обратите внимание, что после ввода каждой точки в строке кода отображается раскрывающийся список Microsoft IntelliSense. Целиком обработчик событий должен выглядеть следующим образом:

    [InfoPathEventHandler(MatchPath="AlertID", EventType=InfoPathEventType.OnClick)]
    public void AlertID_OnClick(DocActionEvent e)
    {
        thisXDocument.UI.Alert("Hello World!");
    }
    
    <InfoPathEventHandler(MatchPath:="AlertID", EventType:=InfoPathEventType.OnClick)>
    Public Sub AlertID_OnClick(ByVal e As DocActionEvent)
        thisXDocument.UI.Alert("Hello World!")
    End Sub
    
    ЗаметкаЗаметка

    В качестве альтернативы использованию метода Alert можно воспользоваться методом MessageBox.Show пространства имен System.Windows.Forms для отображения окна сообщения. Чтобы осуществить это, необходимо добавить ссылку на сборку System.Windows.Forms, добавить using System.Windows.Forms; или Imports System.Windows.Forms в число директив в начале файла кода, а затем ввести строку кода, выглядящую следующим образом: MessageBox.Show("Hello World!); or MessageBox.Show("Hello World!)

  2. Если работа осуществляется в InfoPath и VSTA, переключитесь в окно режима конструктора InfoPath и щелкните кнопку Просмотр на панели инструментов Стандартная.

    Если работа осуществляется в Visual Studio, в меню Отладка выберите пункт Начать отладку (или нажмите клавишу F5).

  3. В окне Просмотр нажмите кнопку Оповещение.

    Отобразится окно с текстовым сообщением "Hello World!"

    В следующей процедуре показано, как добавить отладочные точки останова в код формы.

Отладка кода формы

  1. В редакторе кода щелкните серую полоску слева от строки:

    thisXDocument.UI.Alert("Hello World!");
    
    thisXDocument.UI.Alert("Hello World!")
    

    Отобразится красный кружок, а строка кода будет выделена, указывая, что при запуске кода формы возникнет пауза в этой точке останова.

  2. В меню Отладка выберите пункт Начать отладку (или нажмите клавишу F5).

  3. В окне InfoPath Просмотр нажмите кнопку Оповещение.

    Фокус перемещается на редактор кода, и выделяется строка точки останова.

  4. В меню Отладка выберите пункт Шаг с обходом (или нажмите клавишу F10), чтобы продолжить обход кода.

    Выполнится код метода Alert и в окне InfoPath Просмотр отобразится оповещение "Hello World!".

Получение имени текущего пользователя

С помощью классов .NET Framework можно получить доступ к возможностям, которые сложно реализовать в сценарии. В этом примере предоставляется обучение использованию классов .NET Framework для получения имени текущего пользователя.

Добавление обработчика событий OnLoad

  1. Откройте проект InfoPath "HelloWorld", созданный ранее.

  2. В меню Вид выберите пункт Источник данных.

  3. Щелкните правой кнопкой мыши узел myFields, а затем щелкните Добавить.

  4. В поле Имя введите employee и нажмите кнопку ОК.

  5. Перетащите узел employee в представление.

  6. Если работа осуществляется в InfoPath с VSTA, в меню Сервис выберите последовательно пункты Программирование и Событие OnLoad.

    Если работа осуществляется в Visual Studio, в меню Вставка выберите последовательно пункты Событие и Событие OnLoad.

    В результате будет создан обработчик событий OnLoad, и фокус сместится на редактор кода. Код этого обработчика событий будет вызываться при каждой загрузке формы. В следующей процедуре демонстрируется добавление кода формы, получающего имя пользователя для обработчика событий.

Добавление кода формы

  1. Введите в обработчике событий OnLoad следующий код:

    // Store an XML DOM node as a local variable.
    IXMLDOMNode nodeEmployee = thisXDocument.DOM.selectSingleNode("my:myFields/my:employee");
    if(nodeEmployee != null)
    {
        if(nodeEmployee.text == "")
        {
        // If the employee name is blank when the form is loaded, 
        // populate the employee node with the current user name.
        nodeEmployee.text = System.Environment.UserName;
        }
    }
    
    // Store an XML DOM node as a local variable.
    Dim nodeEmployee As IXMLDOMNode
    nodeEmployee = thisXDocument.DOM.selectSingleNode("my:myFields/my:employee");
    If Not(nodeEmployee Is Nothing) Then
        If(nodeEmployee.text = "") Then
        // If the employee name is blank when the form is loaded, 
        // populate the employee node with the current user name.
        nodeEmployee.text = System.Environment.UserName
        End If
    End If
    
  2. Скомпилируйте и просмотрите форму.

    Теперь в текстовом поле employee должно быть выведено текущее имя пользователя.

Сведения о развертывании шаблона формы с управляемым кодом см. в статье Практическое руководство. Развертывание проектов InfoPath. Сведения об объектной модели InfoPath и типичных задачах программирования в шаблонах форм с управляемым кодом, работающих с объектной моделью, совместимой с InfoPath 2003, см. в статье Ознакомление с объектной моделью InfoPath 2003.

См. также

Задачи

Практическое руководство. Добавление обработчика событий с помощью объектной модели InfoPath 2003

Концепции

Инициализация и очистка кода с помощью объектной модели InfoPath 2003
Объектные модели, совместимые с InfoPath 2003