共用方式為


逐步解說:使用程式代碼建立基本窗體範本

在 Microsoft InfoPath,您可以藉由在InfoPath Designer 中開啟表單範本,然後使用其中一個使用者介面命令新增事件處理常式 (這樣會開啟 Visual Studio 2012 開發環境來撰寫程式碼),以撰寫 Visual Basic 或 C# 的商務邏輯。 根據預設,使用 Visual Studio 2012 所建立的表單範本專案可適用於 Microsoft.Office.InfoPath 命名空間提供的 Managed 程式碼物件模型。

此逐步解說首先示範如何在 Visual Studio 2012 開發環境中,使用 C# 或 Visual Basic 建立簡單的 Hello World 應用程式。 此逐步解說最後會產生一個程式碼範例,讓您了解如何使用 User 類別的 UserName 屬性來擷取目前使用者的名稱,並將該值填入 [文字方塊] 控制項。

先決條件

為了能夠使用 Visual Studio 2012 開發環境來完成這個逐步解說,您將需要:

  • 有安裝 Visual Studio 2012 的 Microsoft InfoPath。

Visual Studio Tools for Applications 中的 Hello World

在下列逐步解說中,您將會了解如何在 Visual Studio 2012 開發環境中,針對與 [按鈕] 控制項關聯之 ButtonEvent 類別的 Clicked 事件,撰寫事件處理常式程式碼,以顯示簡單的提醒對話方塊。

建立新的專案及指定程式設計語言

  1. 啟動 InfoPath Designer,按兩下 [空白 (InfoPath 編輯器)] 表單範本。

  2. 若要指定要使用的程式設計語言,依序按一下 [Office 按鈕][表單選項][類別] 清單中的 [程式設計],然後從 [表單範本程式碼語言] 下拉式清單中選取 [Visual Basic][C#]

    注意事項

    [!注意事項] 在 [表單範本程式碼語言] 下拉式清單中的其他程式設計語言選項可提供 InfoPath 舊版的相容性。 [C# (InfoPath 2003 相容)][Visual Basic (InfoPath 2003 相容)] 選項可適用於本主題的程序。 不過,若要使用 [C# (InfoPath 2003 相容)][Visual Basic (InfoPath 2003 相容)] 選項,請參閱 逐步解說:使用 InfoPath 2003 物件模型建立及偵錯基本表單範本

    您現在可以準備新增 [按鈕] 控制項並建立它的事件處理常式。

新增按鈕控制項及事件處理常式

  1. [控制項] 群組中,按一下 [按鈕] 控制項以新增至表單。

  2. 按兩下 [按鈕] 控制項,然後在功能區的 [內容] 索引標籤中,為 [標籤] 屬性輸入 Hello,再按一下 [自訂程式碼]。 當出現提示時,儲存此表單並將它命名為 HelloWorld。

    如此會開啟 [Visual Studio Tools for Applications] 環境,其中的資料指標會位於 [按鈕] 控制項之 Clicked 事件的事件處理常式中。

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

將 "Hello World" 程式碼加入至事件處理常式並預覽表單

  1. 在事件處理常式的基本架構中,輸入:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

    表單範本的程式碼應該如以下所示:

     using Microsoft.Office.InfoPath;
     using System;
     using System.Windows.Forms;
     using System.Xml;
     using System.Xml.XPath;
     namespace HelloWorld
     {
         public partial class FormCode
         {
             public void InternalStartup()
             {
             ((ButtonEvent)EventManager.ControlEvents["CTRL1_5"]).Clicked += new ClickedEventHandler(CTRL1_5_Clicked);
             }
             public void CTRL1_5_Clicked(object sender, ClickedEventArgs e)
             {
             MessageBox.Show("Hello World!");
             }
         }
     }
    
     Imports Microsoft.Office.InfoPath
     Imports System
     Imports System.Windows.Forms
     Imports System.Xml
     Imports System.Xml.XPath
     Namespace HelloWorld
         Public Class FormCode
             Private Sub InternalStartup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup
             AddHandler DirectCast(EventManager.ControlEvents("CTRL1_5"), ButtonEvent).Clicked, AddressOf CTRL1_5_Clicked
             End Sub
             Public Sub CTRL1_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)
             MessageBox.Show("Hello World!")
             End Sub
         End Class
     End Namespace
    
  2. 切換至 InfoPath Designer 視窗。

  3. 按一下 [常用] 索引標籤中的 [預覽] 按鈕。

  4. 按一下表單上的 Hello 按鈕。

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

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

偵錯表單程式碼

  1. 切換回 Visual Studio 2012 視窗。

  2. 按一下該列左邊的灰色列:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

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

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

  4. 在 InfoPath [預覽] 視窗中,按一下表單上的 Hello 按鈕。

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

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

  7. 如此會執行事件處理常式的程式碼,而且會顯示 "Hello World!" 訊息。

  8. 按一下 [確定] 回到 Visual Studio 2012 程式碼編輯器,然後按一下 [偵錯] 功能表上的 [停止偵錯] (或按 Ctrl+Alt+Break)。

取得目前用戶的名稱

在下列範例中,您將會了解如何使用 User 類別的 UserName 屬性來擷取目前使用者的名稱,並使用 Loading 事件的事件處理常式填入 [文字方塊] 控制項的值。

要填入 [文字方塊] 控制項需藉由 XPathNavigator 類別的執行個體,將目前使用者名稱寫入此控制項所繫結的 XML 節點。

首先,會呼叫 XmlForm 類別的 MainDataSource 屬性,以擷取代表表單基礎 XML 文件的 DataSource 類別執行個體。 然後 DataSource 物件會呼叫 CreateNavigator 方法,以建立 XPathNavigator 物件,並將它放在表單主要資料來源的根節點。

接著,會呼叫 XPathNavigator 類別的 SelectSingleNode 方法,以選取表單資料來源的 employee 欄位。 最後,會呼叫 SetValue 方法,為具有 UserName 屬性的欄位設定其值。

如需在 Managed 程式代碼表單範本中使用 System.Xml 的詳細資訊,請 參閱使用 XPathNavigator 和 XPathNodeIterator 類別

新增 Loading 事件處理常式

  1. 在 InfoPath Designer 中開啟您在上一個逐步解說中建立的 HelloWorld 表單範本。

  2. [檢視] 索引標籤中,選取 [顯示欄位]

  3. 以滑鼠右鍵按一下 [myFields] 資料夾,然後按一下 [新增]

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

  5. 將 employee 欄位拖曳至檢視中。

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

    如此將會為 Loading 事件建立事件處理常式,並將焦點移到程式碼編輯器中的該事件處理常式。

  7. 在程式碼編輯器中,輸入以下程式碼:

     public void FormEvents_Loading(object sender, LoadingEventArgs e)
     {
         XPathNavigator dataSource;
         dataSource = this.MainDataSource.CreateNavigator();
         dataSource.SelectSingleNode(
             "/my:myFields/my:employee", NamespaceManager).SetValue(this.User.UserName);
     }
    
     Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs)
         Dim dataSource As XPathNavigator
         dataSource = Me.MainDataSource.CreateNavigator
         dataSource.SelectSingleNode( _
             "/my:myFields/my:employee", NamespaceManager).SetValue(Me.User.UserName)
     End Sub
    
  8. 請切換至 InfoPath 表單設計視窗,然後按一下 [常用] 索引標籤中的 [預覽] 按鈕,預覽此表單。

    employee 欄位應會自動填入您的使用者名稱。

後續步驟

另請參閱