Пошаговое руководство. Создание и отладка начального шаблона формы с помощью объектной модели InfoPath 2003
В этой теме предоставляется пошаговое руководство по созданию базового шаблона формы InfoPath с управляемым кодом, работающего с объектной моделью, совместимой с InfoPath 2003 и предоставляемой пространством имен Microsoft.Office.Interop.InfoPath.SemiTrust.
Hello World
В следующем примере представлено обучение выводу простого диалогового окна оповещения с помощью метода Alert объектной модели, совместимой с InfoPath 2003.
Создание нового шаблона формы InfoPath, работающего с объектной моделью, совместимой с InfoPath 2003
Создайте новый шаблон формы, работающий с объектной моделью, совместимой с InfoPath 2003, руководствуясь статьей Практическое руководство. Создание шаблона формы с управляемым кодом с помощью объектной модели InfoPath 2003.
Введите имя проекта шаблона формы HelloWorld и сохраните проект.
Проектная система создаст файлы кода и проекта, а затем откроет пустой шаблон формы в режиме конструктора InfoPath. Теперь можно добавлять обработчики событий.
Добавление обработчика событий OnClick
Щелкните Элементы управления в области задач Задачи конструирования.
Если работа осуществляется в 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 [Конструктор].
Дважды щелкните кнопку для открытия диалогового окна Свойства кнопки.
Измените значение параметра Метка на Оповещение.
Измените значение параметра Идентификатор на AlertID.
Щелкните Редактировать код формы.
Структура обработчика событий OnClick создана, и фокус смещается на редактор кода в VSTA или Visual Studio. Дополнительные сведения о работе с обработчиками событий см. в статье Практическое руководство. Добавление обработчика событий с помощью объектной модели InfoPath 2003.
Теперь можно добавить код формы для обработчика событий кнопки.
Добавление кода формы для обработчика событий
Введите в обработчике событий 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!)
Если работа осуществляется в InfoPath и VSTA, переключитесь в окно режима конструктора InfoPath и щелкните кнопку Просмотр на панели инструментов Стандартная.
Если работа осуществляется в Visual Studio, в меню Отладка выберите пункт Начать отладку (или нажмите клавишу F5).
В окне Просмотр нажмите кнопку Оповещение.
Отобразится окно с текстовым сообщением "Hello World!"
В следующей процедуре показано, как добавить отладочные точки останова в код формы.
Отладка кода формы
В редакторе кода щелкните серую полоску слева от строки:
thisXDocument.UI.Alert("Hello World!");
thisXDocument.UI.Alert("Hello World!")
Отобразится красный кружок, а строка кода будет выделена, указывая, что при запуске кода формы возникнет пауза в этой точке останова.
В меню Отладка выберите пункт Начать отладку (или нажмите клавишу F5).
В окне InfoPath Просмотр нажмите кнопку Оповещение.
Фокус перемещается на редактор кода, и выделяется строка точки останова.
В меню Отладка выберите пункт Шаг с обходом (или нажмите клавишу F10), чтобы продолжить обход кода.
Выполнится код метода Alert и в окне InfoPath Просмотр отобразится оповещение "Hello World!".
Получение имени текущего пользователя
С помощью классов .NET Framework можно получить доступ к возможностям, которые сложно реализовать в сценарии. В этом примере предоставляется обучение использованию классов .NET Framework для получения имени текущего пользователя.
Добавление обработчика событий OnLoad
Откройте проект InfoPath "HelloWorld", созданный ранее.
В меню Вид выберите пункт Источник данных.
Щелкните правой кнопкой мыши узел myFields, а затем щелкните Добавить.
В поле Имя введите employee и нажмите кнопку ОК.
Перетащите узел employee в представление.
Если работа осуществляется в InfoPath с VSTA, в меню Сервис выберите последовательно пункты Программирование и Событие OnLoad.
Если работа осуществляется в Visual Studio, в меню Вставка выберите последовательно пункты Событие и Событие OnLoad.
В результате будет создан обработчик событий OnLoad, и фокус сместится на редактор кода. Код этого обработчика событий будет вызываться при каждой загрузке формы. В следующей процедуре демонстрируется добавление кода формы, получающего имя пользователя для обработчика событий.
Добавление кода формы
Введите в обработчике событий 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
Скомпилируйте и просмотрите форму.
Теперь в текстовом поле employee должно быть выведено текущее имя пользователя.
Сведения о развертывании шаблона формы с управляемым кодом см. в статье Практическое руководство. Развертывание проектов InfoPath. Сведения об объектной модели InfoPath и типичных задачах программирования в шаблонах форм с управляемым кодом, работающих с объектной моделью, совместимой с InfoPath 2003, см. в статье Ознакомление с объектной моделью InfoPath 2003.
См. также
Задачи
Практическое руководство. Добавление обработчика событий с помощью объектной модели InfoPath 2003
Концепции
Инициализация и очистка кода с помощью объектной модели InfoPath 2003
Объектные модели, совместимые с InfoPath 2003