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


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

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

Обзор интерфейса UIObject

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

Имя Описание

Alert

Отображает простое окно сообщения, содержащее указанную строку сообщения. Этот метод следует использовать в том случае, если от пользователя не требуется ввода данных, а нужно только отобразить сообщение. Отображенное диалоговое окно закрывается путем нажатия кнопки ОК.

Confirm

Отображение окна сообщения с кнопками для ввода данных. Возвращаемое значение является одной из нумерованных констант XdConfirmChoice.

SetSaveAsDialogFileName

Задает имя файла по умолчанию для формы в диалоговом окне Сохранить как.

SetSaveAsDialogLocation

Задает исходное расположение обзора при открытии диалогового окна Сохранить как.

ShowMailItem

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

ShowModalDialog

Отображает модальное диалоговое окно, основываясь на указанном файле .html и позиционных аргументах. Этот метод следует использовать в том случае, если требуется не только отобразить пользователю простое сообщение, но и вернуть от пользователя некоторые данные (не ограничивающиеся простым подтверждением, которое предоставляется с помощью кнопок Да | Нет | Отмена, отображаемых методом Confirm).

ShowSignatureDialog

Отображает встроенное диалоговое окно Цифровые подписи.

Использование интерфейса UIObject

Доступ к интерфейсу UIObject предоставляется посредством свойства UI интерфейса XDocument, доступ к которому, в свою очередь, предоставляется через переменную thisXDocument, которая инициализируется в методе _Startup класса кода формы. Следующем примере наглядно демонстрируется использование методов ShowMailItem и Alert интерфейса UIObject.

thisXDocument.UI.ShowMailItem("someone@example.com","", "", 
   "Updated Form", "Here is the updated form that you requested.");

thisXDocument.UI.Alert("The e-mail message has been created.");
thisXDocument.UI.ShowMailItem("someone@example.com", "", "", _
   "Updated Form", "Here is the updated form that you requested.")

thisXDocument.UI.Alert("The e-mail message has been created.")

Использование интерфейса ShowModalDialog

В этом примере демонстрируется использование метода ShowModalDialog интерфейса UIObject для отображения настраиваемого диалогового окна, определенного в HTML-файле show.html.

public void CTRL1_5_OnClick(DocActionEvent e)
{
   // Write your code here.
   thisXDocument.UI.ShowModalDialog(
      "show.html",(object)thisXDocument,200,450,50,50);
}
Public Sub CTRL1_5_OnClick(ByVal e As DocActionEvent)
   ' Write your code here.
   thisXDocument.UI.ShowModalDialog( _
      "show.html", _
      DirectCast(thisXDocument, Object), 200, 450, 50, 50)
End Sub

Как для Visual C#, так и для Visual Basic примеры зависят от HTML-файла "show.html", который определяет диалоговое окно, вызываемое с помощью метода ShowModalDialog. В этом HTML-файле отображаются некоторые данные из формы и выводится текстовое поле для заполнения пользователем. Значение текстового поля возвращается в форму при закрытии диалогового окна.

<HTML>
   <HEAD>
      <script language="JScript">
function BtnClick()
{
   xdocument = window.dialogArguments;
   myXml = xdocument.DOM.xml
   aForm = oForm.elements;
   aForm.textBox.value = myXml;
}
      </script>
   </HEAD>
   <BODY>
      <H1><FONT face="Arial">This is a modal dialog box</FONT> &nbsp;
      </H1>
      <BUTTON onclick="BtnClick()" id="BUTTON1" type="button">
         Get XML DOM
      </BUTTON>
      <FORM ID="oForm">
         <INPUT Type="text" name="textBox">
      </FORM>
   </BODY>
</HTML>
ЗаметкаВнимание!

Для запуска и просмотра с применением метода ShowModal требуется полное доверие. Дополнительные сведения см. в статье Практическое руководство. Просмотр и отладка шаблонов форм с управляемым кодом, требующих полного доверия.

Использование формы Windows для диалогового окна

Вместо использования HTML-файла для отображения содержимого диалогового окна, как показано в предыдущем примере, также можно вывести форму Windows в качестве диалогового окна из формы InfoPath. В этом примере демонстрируется отображение формы Windows в качестве настраиваемого диалогового окна с помощью кнопки ShowDialog в форме InfoPath. Для этого не требуется использовать интерфейс UIObject и какие-либо элементы объектной модели InfoPath.

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

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

public void ShowDialog_OnClick(DocActionEvent e)
{
   // Instantiate and show Form1.
   Form1 myform = new Form1();
   myform.Show();
}
Public Sub ShowDialog_OnClick(ByVal e As DocActionEvent)
   ' Instantiate and show Form1.
   Dim MyForm As New Form1()
   MyForm.Show()
End Sub

Как для Visual C#, таки для Visual Basic примеры зависят от формы Windows "Form1", которая определяет диалоговое окно, вызываемое обработчиком событий для кнопки ShowDialog в форме InfoPath. Чтобы добавить форму Form1 в проект InfoPath, воспользуйтесь следующей процедурой.

Добавление формы Windows в проект InfoPath

  1. В Обозревателе решений щелкните правой кнопкой мыши проект кода формы (имя_проектаFormCode), наведите мышь на пункт Добавить, а затем щелкните Добавить форму Windows.

  2. В диалоговом окне Добавление нового элемента введите имя формы и нажмите кнопку Открыть.

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

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

   // Close the form.
   this.Close();
   ' Close the form.
   Me.Close()