XmlForm 類別
表示表單的基礎 XML 文件。
**命名空間:**Microsoft.Office.InfoPath
**組件:**Microsoft.Office.InfoPath (於 microsoft.office.infopath.dll 中)
語法
'宣告
Public MustInherit Class XmlForm
'用途
Dim instance As XmlForm
public abstract class XmlForm
備註
XmlForm 物件是 InfoPath Managed 程式碼物件模型中的關鍵物件,它提供了可透過程式設計方式在表單之基礎 XML 文件內與 XML 資料互動及管理 XML 資料所用的一些屬性、方法及事件。XmlForm 類別在大多數層面上都與 InfoPath 指令碼 (COM) 和 InfoPath 2003 相容之 (Microsoft.Office.InfoPath.SemiTrust) 物件模型的 XDocument 物件相同。
雖然可以使用 Application 類別的 XmlForms 屬性從 XmlFormCollection 類別存取 XmlForm 物件,但是在大多數情況下,當使用表單範本商業邏輯時,您將會使用 this (在 C# 中) 或 Me (在 Visual Basic 中) 關鍵字來存取 XmlForm 類別和它的成員,而不用經由集合。
例如,下列有關 Loading 事件之事件處理常式的程式碼範例會使用 this 或 Me 關鍵字來存取 XmlForm 類別的 MainDataSource 和 NamespaceManager 屬性,這些屬性是用於搭配 System.Xml.XPath.XPathNavigator 類別的執行個體使用,以便瀏覽至 employee 欄位 (使用 NamespaceManager 屬性來解析命名空間前置字元) 並將此欄位設定為目前使用者的使用者名稱。
public void FormEvents_Loading(object sender, LoadingEventArgs e)
{
// Create XPathNavigator positioned at the root of the main data
// source.
XPathNavigator myNav = this.MainDataSource.CreateNavigator()
// Select employee field and set value to username.
myNav.SelectSingleNode("//my:employee",this.NamespaceManager).
SetValue(System.Environment.UserName);
}
Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs)
' Create XPathNavigator positioned at the root of the main data
' source.
Dim myNav As XPathNavigator = Me.MainDataSource.CreateNavigator()
' Select employee field and set value to username.
myNav.SelectSingleNode("//my:employee", Me.NamespaceManager). _
SetValue(System.Environment.UserName)
End Sub
注意
明確參照 this 或 Me 關鍵字來存取表單程式碼中 XmlForm 類別的成員,是不必要的動作。例如,用來在上面的 C# 和 Visual Basic 範例中存取 MainDataSource 屬性的幾行程式碼可以撰寫如下:
XPathNavigator myNav = MainDataSource.CreateNavigator()
Dim myNav As XPathNavigator = MainDataSource.CreateNavigator()
當使用 Managed 程式碼時,表單的來源 XML 資料是透過 MainDataSource 屬性所存取,這個屬性會傳回代表此表單之主要資料來源的 DataSource 賴別執行個體。然後,會使用 DataSource 類別的 CreateNavigator 方法來建立 System.Xml.XPath.XPathNavigator 類別的執行個體 (位於此表單之基礎 XML 文件的根節點)。接下來,可以使用 XPathNavigator 類別的成員來瀏覽及讀取表單資料,以及將資料寫入至表單資料。如需在 InfoPath 表單程式碼中使用 XPathNavigator 類別的詳細資訊,請參閱操作方法:使用 XPathNavigator 和 XPathNodeIterator 類別。
XmlForm 類別也提供了其他屬性,可用於取得與表單及其基礎 XML 文件有關的資訊,這個類別也提供了可利用此表單執行各種動作 (如列印、儲存及送出) 的一些方法。在指令碼 (COM) 物件模型中時,XDocument 物件會實作表單層次事件;在 Managed 程式碼物件模型中,表單層次事件 (如載入表單、切換檢視或合併作業) 是由 FormEvents 類別所實作。此外,因為基礎 XML 文件本身變更而引發的事件是由 XmlEvents 類別所實作。
XmlForm 物件可以從 InfoPath 物件模型中的 XmlFormCollection 和 Window 類別來存取。下表摘要列出可使用 XmlForm 物件的這些位置。
名稱 |
描述 |
---|---|
XmlFormCollection |
使用 XmlForms 屬性從 Application 物件存取。提供 Item 屬性和 Open 方法存取其中包含的 XmlForm 物件。 |
Window |
提供 XmlForm 屬性存取與此視窗相關聯的 XmlForm 物件。 |
在配合 Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET 使用之 InfoPath 2003 Service Pack 1 中初次引入的 InfoPath 2003 相容 Managed 程式碼物件模型中 (Microsoft.Office.Interop.InfoPath.SemiTrust 命名空間的類型和成員),下列類別提供 XDocument 屬性,用來在事件期間存取表單的基礎 XML 文件:DataDOMEventObject、DocActionEventObject、DocEventObject、DocReturnEventObject 和 VersionUpgradeEventObject 類別。
在新的 InfoPath Managed 程式碼物件模型中 (Microsoft.Office.InfoPath 命名空間的類型和成員),您可以使用 this (在 C# 中) 或 Me (在 Visual Basic 中) 關鍵字,從事件處理常式及表單範本商業邏輯中的其他程式碼來存取 XmlForm 類別和它的成員。
繼承階層
System.Object
Microsoft.Office.InfoPath.XmlForm
執行緒安全
此型別的所有公用靜態 (於 Visual Basic 共用) 成員都是執行緒安全。但並不保證所有執行個體成員為執行緒安全。