共用方式為


操作方法:使用 InfoPath 2003 物件模型顯示提醒和對話方塊

在撰寫程式碼來擴充使用 InfoPath 2003 物件模型之表單範本的功能時,在對話方塊中提供資訊給使用者通常會很實用。在 InfoPath 中,如果想以程式顯示對話方塊及相關使用者介面元素,可以透過使用 UIObject 介面的方法來完成。

UIObject 介面的概觀

UIObject 介面提供下列方法,讓表單開發者可以在 InfoPath 使用者填寫表單時,對使用者顯示不同類型的對話方塊。

名稱 描述

Alert

顯示包含指定訊息字串的簡單訊息方塊。當不需要使用者輸入資料,而且只需要顯示一個訊息時,就可以使用此方法。按一下 [確定] 按鈕,關閉要顯示的對話方塊。

Confirm

顯示一個訊息方塊,上面有一個按鈕可供使用者輸入。所傳回的值是 XdConfirmChoice 所列舉的其中一個常數。

SetSaveAsDialogFileName

在 [另存新檔] 對話方塊中,設定表單的預設檔案名稱。

SetSaveAsDialogLocation

設定開啟 [另存新檔] 對話方塊時開始瀏覽的初始位置。

ShowMailItem

在預設電子郵件應用程式中建立新的電子郵件,並將目前開啟的表單附加到該郵件中。

ShowModalDialog

根據指定的 .html 檔案及位置引數顯示強制回應對話方塊。如果您要對使用者顯示一個以上的簡單訊息,並且想從使用者取回一些資料 (除了 Confirm 方法顯示的 [是] | [否] | [取消] 按鈕所提供的簡單確認以外),應該使用此方法。

ShowSignatureDialog

顯示內建 [數位簽章] 對話方塊。

使用 UIObject 介面

UIObject 介面是透過 XDocument 介面 (其本身則是透過表單程式碼類別的 _Startup 方法初始化的 thisXDocument 變數來存取) 的 UI 屬性來存取。下列範例示範使用 UIObject 介面的 ShowMailItemAlert 方法。

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 方法

這個範例會示範如何使用 UIObject 介面的 ShowModalDialog 方法來顯示 show.html 這個 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 範本都依賴名為 "show.html" 的 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 方法需要「完全信任」才能執行或預覽。如需詳細資訊,請參閱操作方法:預覽及偵錯需要完全信任的 Managed 程式碼表單範本

使用 Windows Form 顯示對話方塊

除了使用 HTML 檔案在對話方塊中顯示內容 (如上述範例所示) 之外,您也可以將 Windows Form 顯示為 InfoPath 表單中的對話方塊。這個範例會示範如何利用 InfoPath 表單中的 ShowDialog 按鈕,將 Windows Form 以自訂對話方塊的形式顯示出來,此動作不需要使用 UIObject 介面或 InfoPath 物件模型的其他任何成員。

注意

您無法建立 Windows Form 並加入至使用 Microsoft Visual Studio Tools for Applications (VSTA) 所建立的 InfoPath 表單範本專案。若要建立 Windows Form 並加入至表單範本專案,您必須使用 Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office system 和 Visual Studio 2005,或 Visual Studio 2008 附 Visual Studio Tools for 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 範例都依賴名為 "Form1" 的 Windows Form,它會定義 InfoPath 表單上 ShowDialog 按鈕的事件處理常式所叫用的對話方塊。若要將 Form1 加入至 InfoPath 專案,請使用下列程序。

將 Windows Form 加入至 InfoPath 專案

  1. 在 [方案總管] 中,以滑鼠右鍵按一下表單程式碼專案 (projectnameFormCode),然後指向 [新增],再按一下 [加入 Windows Form]。

  2. 在 [加入新項目] 對話方塊中命名表單,然後按一下 [開啟]。

  3. 從 [工具箱] 中,將 [按鈕] 控制項拖曳至表單上。

  4. 按兩下此按鈕,然後將下列程式碼加入至此按鈕的事件處理常式中。

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