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


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

Если приложение Microsoft Office InfoPath 2003 используется для написания бизнес-логики на языке управляемого кода (Visual Basic или C#), то используется проект InfoPath, созданный с помощью Microsoft Visual Studio .NET 2003 и набора средств Microsoft Office InfoPath 2003 Toolkit для Visual Studio .NET или пакета средств Visual Studio 2005 для системы Microsoft Office с набором средств Microsoft Office InfoPath 2003 Toolkit для Visual Studio 2005. Обе эти среды разработки управляемого кода используют и поддерживают только объектную модель управляемого кода для COM-взаимодействия, предоставляемую сборкой Microsoft.Office.Interop.InfoPath.SemiTrust

Бизнес-логику для приложения Microsoft Office InfoPath 2007 можно написать на языке Visual Basic или C#, открыв шаблон формы в режиме конструктора и воспользовавшись одной из команд интерфейса пользователя для добавления обработчика событий, который откроет среду разработки Набор средств Microsoft Visual Studio для приложений (VSTA) для написания необходимого кода. По умолчанию проекты шаблонов форм создаются с помощью набора средств VSTA, использующего новую объектную модель управляемого кода, которая предоставляется сборкой Microsoft.Office.InfoPath.

Если на компьютере установлена среда Visual Studio 2005 с Набор средств Microsoft Visual Studio 2005 для Microsoft Office System 2007 или Visual Studio 2008 с Visual Studio Tools для Office, то можно также начать работу в Visual Studio, создать проект шаблона формы InfoPath, а затем использовать интеграцию режима конструктора InfoPath для разработки формы и добавления бизнес-логики, не покидая среды Visual Studio.

В первом пошаговом руководстве демонстрируются методы создания простого приложения "Hello World" с помощью языка C# или Visual Basic в средах разработки VSTA и Visual Studio. В заключении руководства приведен пример кода, демонстрирующий принципы использования свойства System.Environment.UserName для получения имени текущего пользователя и заполнения элемента управления Текстовое поле полученным значением.

Предварительные требования

Для выполнения инструкций этого пошагового руководства в среде разработки VSTA необходимо установить следующее программное обеспечение:

  • Microsoft Office InfoPath 2007 с Набор средств Microsoft Visual Studio для приложений (VSTA).

Для выполнения инструкций этого пошагового руководства в среде разработки Visual Studio с интеграцией режима конструктора InfoPath необходимо установить следующее программное обеспечение:

  • Microsoft Office InfoPath 2007

  • Microsoft Visual Studio 2005 с Набор средств Microsoft Visual Studio 2005 для Microsoft Office System 2007 или Visual Studio 2008 с Visual Studio Tools для Office

ЗаметкаЗаметка

Сведения о загрузке и установке Набор средств Microsoft Visual Studio 2005 для Microsoft Office System 2007 см. на портале разработчика InfoPath.

Создание примера "Hello World" в среде VSTA

В следующем пошаговом руководстве демонстрируется, как отобразить простое диалоговое окно с оповещением путем написания обработчика событий Clicked для класса ButtonEvent, связанного с элементом управления Кнопка. В этих процедурах предполагается использование среды разработки Набор средств Microsoft Visual Studio для приложений (VSTA).

Создание нового проекта и выбор языка программирования (пакет Visual Studio Tools for Applications)

  1. Запустите приложение InfoPath.

  2. В диалоговом окне Заполнить форму нажмите кнопку Создать шаблон формы в разделе Создать форму.

    ЗаметкаЗаметка

    Если приложение InfoPath уже запущено, то для вывода диалогового окна Создать форму выберите пункт Создать форму в меню Файл.

  3. В диалоговом окне Создание шаблона формы последовательно щелкните Шаблон формы и Пустой, затем снимите флажок Включить только возможности, совместимые с веб-обозревателем и нажмите кнопку ОК.

  4. В меню Сервис выберите пункт Параметры формы.

  5. В списке Категория щелкните Программирование, выберите либо Visual Basic, либо C# в раскрывающемся списке Язык кода шаблона формы, а затем нажмите кнопку ОК.

    Теперь можно добавить элемент управления Кнопка и создать для него обработчик событий.

Добавление элемента управления "Кнопка" и обработчика событий

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

  2. Перетащите элемент управления Кнопка на форму.

  3. Дважды щелкните элемент управления Кнопка, введите значение Hello для свойства Надпись и щелкните Редактировать код формы. При получении запроса сохраните форму и назовите ее HelloWorld.

    После этого откроется среда Visual Studio Tools for Applications с курсором на обработчике событий Clicked для элемента управления Кнопка.

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

Добавьте в обработчик событий код "Hello World" и просмотрите форму

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

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

    Код в шаблоне формы должен выглядеть примерно следующим образом:

    using Microsoft.Office.InfoPath;
    using System;
    using System.Windows.Forms;
    using System.Xml;
    using System.Xml.XPath;
    
    namespace HelloWorld
    {
       public partial class FormCode
       {
          public void InternalStartup()
          {
             ((ButtonEvent)EventManager.ControlEvents["CTRL1_5"]).Clicked += new ClickedEventHandler(CTRL1_5_Clicked);
          }
    
          public void CTRL1_5_Clicked(object sender, ClickedEventArgs e)
          {
             MessageBox.Show("Hello World!");
          }
       }
    }
    
    Imports Microsoft.Office.InfoPath
    Imports System
    Imports System.Windows.Forms
    Imports System.Xml
    Imports System.Xml.XPath
    
    Namespace HelloWorld
       Public Class FormCode
          Private Sub InternalStartup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup
             AddHandler DirectCast(EventManager.ControlEvents("CTRL1_5"), ButtonEvent).Clicked, AddressOf CTRL1_5_Clicked
          End Sub
    
          Public Sub CTRL1_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)
             MessageBox.Show("Hello World!")
          End Sub
       End Class
    End Namespace
    
  2. Переключитесь в окно режима конструктора InfoPath.

  3. Нажмите кнопку Просмотр на панели инструментов Стандартная.

  4. Нажмите кнопку Hello.

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

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

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

  1. Переключитесь обратно в окно VSTA.

  2. Щелкните серую полосу слева от строки:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

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

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

  4. В окне InfoPath Просмотр нажмите кнопку Hello.

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

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

  7. Выполнится код обработчика событий, и отобразится сообщение "Hello World!".

  8. Нажмите кнопку ОК, чтобы вернуться в редактор кода VSTA, а затем щелкните Остановить отладку в меню Отладка (или нажмите сочетание клавиш CTRL+ALT+BREAK).

Создание примера "Hello World" в среде Visual Studio с интеграцией режима конструктора InfoPath

В следующем пошаговом руководстве демонстрируется, как создать аналогичный пример "Hello World", но с использованием среды Visual Studio 2005 с интеграцией режима конструктора InfoPath, включенной путем установки Набор средств Microsoft Visual Studio 2005 для Microsoft Office System 2007 или Visual Studio 2008 с Visual Studio Tools для Office.

Создание нового проекта и выбор языка программирования (Visual Studio)

  1. Запустите среду Visual Studio.

  2. В меню Файл выберите последовательно пункты Создать и Проект.

  3. В разделе Типы проектов разверните папку Visual C#, щелкните Office (в Visual Studio 2008 затем щелкните 2007) и выберите Шаблон формы InfoPath.

    В качестве альтернативы можно последовательно развернуть папки Другие языки и Visual Basic, щелкнуть Office (в Visual Studio 2008 затем щелкнуть 2007) и выбрать Шаблон формы InfoPath.

  4. Назовите проект HelloWorld и нажмите кнопку ОК.

  5. В диалоговом окне Создать форму щелкните последовательно Шаблон формы и Пустой, а затем нажмите кнопку ОК.

    На вкладке manifest.xsf [Конструктор] отобразится интегрированный конструктор шаблонов форм InfoPath.

    Теперь можно добавить элемент управления Кнопка и создать для него обработчик событий.

Добавление элемента управления "Кнопка" и обработчика событий

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

Если область задач Задачи конструирования не отображается, выберите пункт Задачи конструирования в меню Вид.

  1. Перетащите элемент управления Кнопка с Панели элементов на форму.

  2. Дважды щелкните элемент управления Кнопка, введите значение Hello для свойства Надпись и щелкните Редактировать код формы. При получении запроса сохраните форму.

    После этого откроется окно редактора кода с курсором на обработчике событий Clicked для элемента управления Кнопка.

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

Добавьте в обработчик событий код "Hello World" и просмотрите форму

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

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

    Код в шаблоне формы должен выглядеть примерно следующим образом:

    using Microsoft.Office.InfoPath;
    using System;
    using System.Windows.Forms;
    using System.Xml;
    using System.Xml.XPath;
    
    namespace HelloWorld
    {
       public partial class FormCode
       {
          public void InternalStartup()
          {
             ((ButtonEvent)EventManager.ControlEvents["CTRL1_5"]).Clicked += new ClickedEventHandler(CTRL1_5_Clicked);
          }
    
          public void CTRL1_5_Clicked(object sender, ClickedEventArgs e)
          {
             MessageBox.Show("Hello World!");
          }
       }
    }
    
    Imports Microsoft.Office.InfoPath
    Imports System
    Imports System.Windows.Forms
    Imports System.Xml
    Imports System.Xml.XPath
    
    Namespace HelloWorld
       Public Class FormCode
          Private Sub InternalStartup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup
             AddHandler DirectCast(EventManager.ControlEvents("CTRL1_5"), ButtonEvent).Clicked, AddressOf CTRL1_5_Clicked
          End Sub
    
          Public Sub CTRL1_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)
             MessageBox.Show("Hello World!")
          End Sub
       End Class
    End Namespace
    
  2. В меню Отладка выберите пункт Начать отладку (или нажмите клавишу F5).

    Отобразится окно InfoPath Просмотр.

  3. Нажмите кнопку Hello.

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

  4. Нажмите кнопку ОК, а затем кнопку Закрыть просмотр на панели инструментов Стандартная, чтобы вернуться в Visual Studio.

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

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

  1. Чтобы вернуться в редактор кода, перейдите на вкладку FormCode.cs или FormCode.vb.

  2. Щелкните серую полосу слева от строки:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

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

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

  4. В окне InfoPath Просмотр нажмите кнопку Hello.

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

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

  7. Выполнится код обработчика событий, и отобразится сообщение "Hello World!".

  8. Нажмите кнопку ОК, чтобы вернуться в редактор кода, а затем щелкните Остановить отладку в меню Отладка (или нажмите сочетание клавиш CTRL+ALT+BREAK).

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

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

Заполнение элемента управления Текстовое поле выполняется с помощью двух экземпляров класса XPathNavigator.

Первый экземпляр использует свойство MainDataSource класса XmlForm для получения экземпляра класса DataSource, представляющего базовый XML-документ формы. Этот экземпляр класса DataSource впоследствии использует метод CreateNavigator для размещения класса XPathNavigator в корневом узле XML-документа.

Второй экземпляр XPathNavigator помещается в XML-документе в поле "employee" с помощью первого экземпляра, а затем использует метод SetValue класса XPathNavigator для указания значения поля через свойство UserName.

Дополнительные сведения о работе с классом System.Xml в шаблонах форм с управляемым кодом см. в разделе Практическое руководство. Работа с классами XPathNavigator и XPathNodeIterator.

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

  1. Откройте проект "HelloWorld", созданный в предыдущем пошаговом руководстве.

    Если работа осуществляется в InfoPath с Набор средств Microsoft Visual Studio для приложений (VSTA), запустите приложение InfoPath и откройте форму в режиме конструктора InfoPath. При работе в среде Visual Studio 2005 с Набор средств Microsoft Visual Studio 2005 для Microsoft Office System 2007 или Visual Studio 2008 с Visual Studio Tools для Office запустите среду Visual Studio и откройте проект.

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

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

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

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

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

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

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

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

    public void FormEvents_Loading(object sender, LoadingEventArgs e)
    {
       System.Xml.XPath.XPathNavigator root, user;
       root = this.MainDataSource.CreateNavigator();
       user = root.SelectSingleNode("//my:employee", this.NamespaceManager);
       user.SetValue(System.Environment.UserName);
    }
    
    Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs)
       Dim root, user As System.Xml.XPath.XPathNavigator
       root = Me.MainDataSource.CreateNavigator
       user = root.SelectSingleNode("/my:myFields/my:employee", Me.NamespaceManager)
       user.SetValue(System.Environment.UserName)
    End Sub
    
  8. Если работа производится в Набор средств Microsoft Visual Studio для приложений (VSTA), переключитесь в окно конструктора форм InfoPath и нажмите кнопку Просмотр, чтобы просмотреть форму.

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

Следующие этапы

См. также

Ссылка

XmlForm