Практическое руководство. Отображение оповещений и диалоговых окон с помощью объектной модели InfoPath 2003
При написании кода для расширения возможностей шаблона формы, использующего объектную модель InfoPath 2003, зачастую полезно предоставлять пользователю сведения в диалоговом окне. Программное отображение диалогового окна и соответствующих элементов интерфейса пользователя в InfoPath осуществляется путем использования методов интерфейса UIObject.
Обзор интерфейса UIObject
Интерфейс UIObject предоставляет следующие методы, которые разработчики форм могут использовать для отображения различных типов диалоговых окон пользователям InfoPath во время заполнения формы.
Имя | Описание |
---|---|
Отображает простое окно сообщения, содержащее указанную строку сообщения. Этот метод следует использовать в том случае, если от пользователя не требуется ввода данных, а нужно только отобразить сообщение. Отображенное диалоговое окно закрывается путем нажатия кнопки ОК. |
|
Отображение окна сообщения с кнопками для ввода данных. Возвращаемое значение является одной из нумерованных констант XdConfirmChoice. |
|
Задает имя файла по умолчанию для формы в диалоговом окне Сохранить как. |
|
Задает исходное расположение обзора при открытии диалогового окна Сохранить как. |
|
Создает новое сообщение электронной почте в используемом по умолчанию приложении электронной почты с вложением открытой в данный момент формы в сообщение. |
|
Отображает модальное диалоговое окно, основываясь на указанном файле .html и позиционных аргументах. Этот метод следует использовать в том случае, если требуется не только отобразить пользователю простое сообщение, но и вернуть от пользователя некоторые данные (не ограничивающиеся простым подтверждением, которое предоставляется с помощью кнопок Да | Нет | Отмена, отображаемых методом Confirm). |
|
Отображает встроенное диалоговое окно Цифровые подписи. |
Использование интерфейса 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>
</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
В Обозревателе решений щелкните правой кнопкой мыши проект кода формы (имя_проектаFormCode), наведите мышь на пункт Добавить, а затем щелкните Добавить форму Windows.
В диалоговом окне Добавление нового элемента введите имя формы и нажмите кнопку Открыть.
Перетащите из Панели элементов в форму элемент управления Кнопка.
Дважды щелкните кнопку, а затем добавьте следующий код для обработчика событий кнопки.
// Close the form.
this.Close();
' Close the form.
Me.Close()