共用方式為


逐步解說:使用 InfoPath 物件模型建立基本窗體範本並進行偵錯

本主題提供建立基本 InfoPath Managed 程式代碼窗體範本的逐步解說,該範本可與 Microsoft.Office.Interop.InfoPath.SemiTrust 命名空間所提供的 InfoPath 2003 兼容物件模型搭配使用。

Hello World

在下列範例中,您將瞭解如何使用 InfoPath 2003 相容物件模型的 Alert 方法來顯示簡單的警示對話框。

建立使用 InfoPath 2003 相容物件模型的新 InfoPath 表單範本

  1. 建立與 InfoPath 2003 相容物件模型搭配使用的新表單範本,如 使用 InfoPath 2003 物件模型建立表單範本中所述。

  2. 將表單範本專案命名為 HelloWorld,並且加以儲存。

    專案系統會建立程式碼和專案檔案,並在 InfoPath 設計模式中開啟空白表單範本。 您現在可以開始新增事件處理常式。

新增具有 OnClick 事件處理常式的按鈕

  1. [常用] 索引標籤的 [控制項] 區段中,按一下 [按鈕] 控制項將它插入檢視中。

  2. 以滑鼠右鍵按一下該控制項,然後按一下 [按鈕內容]

  3. [卷標 ] 變更為 [警示]。

  4. 標識碼 變更為 AlertID。

  5. 按一下 [編輯表單程式碼]

    隨即建立 OnClick 事件的事件處理程式基本架構,並將焦點移至 Visual Studio 2012 中的程式碼編輯器。 如需使用事件處理程式的詳細資訊,請參閱 使用 InfoPath 2003 物件模型新增事件處理程式

    您現在可以開始將表單程式碼加入到該按鈕的事件處理常式中。

將表單程式碼新增至事件處理常式

  1. 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 方法的替代方案,您可以使用 System.Windows.Forms 命名空間的 MessageBox.Show 方法來顯示訊息方塊。 若要這樣做,您必須新增 System.Windows.Forms 元件的參考、在程式碼檔案開頭新增 using System.Windows.Forms;Imports System.Windows.Forms 至 指示詞,然後輸入程式代碼行,如下所示: MessageBox.Show("Hello World!); or MessageBox.Show("Hello World!)

  2. 切換至 InfoPath 設計模式視窗,然後按一下 [常用] 索引標籤中的 [預覽] 按鈕。

  3. [預覽] 視窗中,按一下 [Alert] 按鈕。

    含有 "Hello World!" 文字的訊息方塊便會出現。

    下一個程序將示範如何在表單程式碼中新增偵錯中斷點。

偵錯表單程式碼

  1. 在程式碼編輯器中,按一下程式碼行左邊的灰色列:

     thisXDocument.UI.Alert("Hello World!");
    
     thisXDocument.UI.Alert("Hello World!")
    

    會在表單程式碼行中顯示紅色的圓圈,並醒目提示程式碼行以指出在此中斷點將暫停的執行階段。

  2. 按一下 [偵錯] 功能表上的 [開始偵錯] (或按 F5)。

  3. 在 InfoPath [預覽] 視窗中,按一下 [Alert] 按鈕。

    焦點便會移到程式碼編輯器,並會醒目提示中斷點行。

  4. 按一下 [偵錯] 功能表上的 [不進入函式] (或按 Shift+F8),繼續逐步執行程式碼。

    會執行 Alert 方法程式碼,並會在 InfoPath [預覽] 視窗中顯示 "Hello World!" 提醒。

取得目前使用者的名稱

藉由使用 .NET Framework 類別,您可取得指令碼中不易取得的功能表。 在此範例中,您將學習如何使用 .NET Framework 類別來擷取目前使用者的名稱。

新增 OnLoad 事件處理常式

  1. 開啟您在之前所建立的 InfoPath HelloWorld 專案。

  2. [檢視] 索引標籤中,按一下 [顯示欄位]

  3. 以滑鼠右鍵按一下 [myFields] 節點,然後按一下 [新增]

  4. [名稱] 中,輸入 employee,然後按一下 [確定]

  5. [employee] 節點拖曳至檢視中。

  6. [開發人員] 索引標籤中,按一下 [On Load 事件]

    這會建立 OnLoad 事件的事件處理程式,並將焦點移至程式碼編輯器。 每次載入表單時都會呼叫此事件處理常式中的程式碼。 下一個程序會示範如何新增將使用者名稱擷取至事件處理常式的表單程式碼。

新增表單程式碼

  1. 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
    
  2. 編譯和預覽表單。

    employee 文字方塊現在應該已經填入您的使用者名稱。

如需如何部署 Managed 程式代碼表單範本的資訊,請參閱 使用程式碼部署 InfoPath 窗體範本。 如需使用 InfoPath 2003 相容物件模型之 Managed 程式代碼表單範本中 InfoPath 物件模型和常見程序設計工作的資訊,請參閱 瞭解 InfoPath 2003 物件模型

另請參閱