XmlForm 类

代表表单的基础 XML 文档。

继承层次结构

System.Object
  Microsoft.Office.InfoPath.XmlForm

命名空间:  Microsoft.Office.InfoPath
程序集:  Microsoft.Office.InfoPath(位于 Microsoft.Office.InfoPath.dll 中)

语法

声明
Public MustInherit Class XmlForm
用法
Dim instance As XmlForm
public abstract class XmlForm

备注

XmlForm 类是 InfoPath 托管代码对象模型中的关键对象,该对象提供的属性、方法以及事件可以用来以编程方式与表单的基础 XML 文档中的 XML 数据进行交互,并操作这些数据。

虽然可以使用 Application 类的 XmlForms 属性通过 XmlFormCollection 类访问 XmlForm 对象,但在使用表单模板业务逻辑的大多数情况下,将使用 C# 中的 this 关键字或 Visual Basic 中的 Me 关键字来访问 XmlForm 类及其成员,而不通过集合进行访问。

例如,Loading 事件的事件处理程序的以下代码示例使用 this 关键字或 Me 关键字来访问 XmlForm 类的 MainDataSourceNamespaceManager 属性。这些属性与 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()

但是,在编写代码时使用 this 或 Me 关键字确实可以帮助实现 IntelliSense 语句完成,它在编写表单模板的 FormCode 模块中的业务逻辑代码时列出 XmlForm 类的成员。

在使用托管代码时,表单的源 XML 数据通过 MainDataSource 属性进行访问,该属性返回代表该表单主数据源的 DataSource 类的实例。然后,使用 DataSource 类的 CreateNavigator 方法创建 System.Xml.XPath.XPathNavigator 类的实例,该实例位于表单的基础 XML 文档的根位置处。接下来,可以使用 XPathNavigator 类的成员导航、读取或写入表单数据。有关在 InfoPath 表单代码中使用 XPathNavigator 类的详细信息,请参阅如何:使用 XPathNavigator 和 XPathNodeIterator 类

XmlForm 类还提供其他属性,可用于获取有关表单及其基础 XML 文档的信息。另外,它还提供可用于执行各种表单操作的方法,如打印、保存和提交。加载表单、切换视图或合并操作等表单级事件由 FormEvents 类来实现。此外,通过更改基础 XML 文档自身引发的事件由 XmlEvents 类进行实现。

可以通过 InfoPath 对象模型的 XmlFormCollectionWindow 类访问 XmlForm 对象。下表列出了可用 XmlForm 对象的位置。

名称

说明

XmlFormCollection

通过使用 XmlForms 属性从 Application 对象进行访问。提供用于访问其所包含的 XmlForm 对象的 Item 属性和 Open() 方法。

Window

提供 XmlForm 属性,用于访问与该窗口相关联的 XmlForm 对象。

在 InfoPath 2003 Service Pack 1 和 Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET 最早提供的与 InfoPath 2003 兼容的托管代码对象模型(Microsoft.Office.Interop.InfoPath.SemiTrust 命名空间的类型和成员)中,下列类提供了用于在事件过程中访问表单的基础 XML 文档的 XDocument 属性:DataDOMEventObjectDocActionEventObjectDocEventObjectDocReturnEventObjectVersionUpgradeEventObject 类。

在新的 InfoPath 托管代码对象模型(Microsoft.Office.InfoPath 命名空间的类型和成员)中,使用 C# 中的 this 关键字或 Visual Basic 中的 Me 关键字访问事件处理程序以及表单模板业务逻辑的其他代码中的 XmlForm 类及其成员。

线程安全性

该类型的任何公共 静态 (已共享 在 Visual Basic 中) 成员都是线程安全的。不保证任何实例成员都是线程安全的。

另请参阅

引用

XmlForm 成员

Microsoft.Office.InfoPath 命名空间