Clase XmlForm

Representa el documento XML subyacente de un formulario.

Jerarquía de la herencia

System.Object
  Microsoft.Office.InfoPath.XmlForm

Espacio de nombres:  Microsoft.Office.InfoPath
Ensamblado:  Microsoft.Office.InfoPath (en Microsoft.Office.InfoPath.dll)

Sintaxis

'Declaración
Public MustInherit Class XmlForm
'Uso
Dim instance As XmlForm
public abstract class XmlForm

Comentarios

La clase XmlForm es un objeto clave en el modelo de objetos de código administrado de InfoPath que proporciona propiedades, métodos y eventos que se pueden usar para interactuar mediante programación con los datos XML del documento XML subyacente de un formulario y manipularlos.

A los objetos XmlForm se puede tener acceso desde la clase XmlFormCollection mediante la propiedad XmlForms de la clase Application, mientras que en la mayoría de los casos, al trabajar con la lógica empresarial de la plantilla de formulario se tendrá acceso a la clase XmlForm y sus miembros mediante las palabras claves this (en C#) o Me (en Visual Basic) sin tener que pasar por la colección.

Por ejemplo, en los siguientes ejemplos de código de controladores de eventos del evento Loading se usan las palabras claves this o Me para tener acceso a las propiedades MainDataSource y NamespaceManager de la clase XmlForm. Estas propiedades se usan para trabajar con una instancia de la clase System.Xml.XPath.XPathNavigator para desplazarse al campo employee (resolución de prefijos de espacio de nombres mediante la propiedad NamespaceManager) y, a continuación, establecer el valor del campo para el nombre de usuario del usuario actual.

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

Nota

No es necesario hacer una referencia explícita a las palabras clave this o Me para tener acceso a los miembros de la clase XmlForm en el código de formulario. Por ejemplo, las líneas de código para tener acceso a la propiedad MainDataSource de los ejemplos precedentes de C# y Visual Basic se pueden escribir así:

XPathNavigator myNav = MainDataSource.CreateNavigator()
Dim myNav As XPathNavigator = MainDataSource.CreateNavigator()

Sin embargo, al utilizar las palabras claves this o Me al escribir código no facilita la finalización automática de instrucciones de IntelliSense, que enumer los miembros de la clase XmlForm al escribir lógica empresarial con código en un módulo FormCode de la plantilla de formulario.

Al trabajar con código administrado, se tiene acceso a los datos XML de origen de un formulario a través de la propiedad MainDataSource que devuelve una instancia de la clase DataSource que representa el origen de datos principal del formulario. El método CreateNavigator de la clase DataSource se usa a continuación para crear una instancia de la clase System.Xml.XPath.XPathNavigator que se encuentra en la raíz del documento XML subyacente del formulario. Después, se pueden usar los miembros de la clase XPathNavigator para ir a los datos del formulario, leerlos y escribir en ellos. Para obtener más información sobre el uso de la clase XPathNavigator en el código de formulario de InfoPath, vea How to: Work with System.Xml from Managed-code Form Templates.

La clase XmlForm también proporciona propiedades adicionales que se pueden usar para obtener información acerca del formulario y su documento XML subyacente. También proporciona métodos que se pueden utilizar para realizar diferentes acciones con el formulario, como imprimirlo, guardarlo y enviarlo. Los eventos de nivel de formulario, como cambiar un formulario, cambiar vistas o combinar operaciones, se implementan mediante la clase FormEvents. Además, la clase XmlEvents implementa los eventos generados por cambios en el documento XML subyacente mismo.

Se puede tener acceso al objeto XmlForm desde las clases XmlFormCollection y Window en el modelo de objetos de InfoPath. En la siguiente tabla se resumen las ubicaciones en las que está disponible el objeto XmlForm.

Name

Description

XmlFormCollection

Acceso desde el objeto Application mediante la propiedad XmlForms. Proporciona la propiedad Item y el método Open() para tener acceso a los objetos XmlForm que contiene.

Window

Proporciona la propiedad XmlForm para tener acceso al objeto XmlForm asociado a la ventana.

En el modelo de objetos de código administrado compatible con InfoPath 2003 (los tipos y miembros del espacio de nombres Microsoft.Office.Interop.InfoPath.SemiTrust), que se introdujo en InfoPath 2003 Service Pack 1 junto con el Kit de herramientas de Microsoft Office InfoPath 2003 para Visual Studio .NET, las clases siguientes proporcionaban una propiedad XDocument para tener acceso al documento XML subyacente de un formulario mientras se producen eventos: clases DataDOMEventObject, DocActionEventObject, DocEventObject, DocReturnEventObject y VersionUpgradeEventObject.

En el nuevo modelo de objetos de código administrado de InfoPath (los tipos y miembros del espacio de nombres Microsoft.Office.InfoPath), se usan las palabras clave this (en C#) o Me (en Visual Basic) para tener acceso a la clase XmlForm y sus miembros desde controladores de eventos y desde otro código de la lógica empresarial de la plantilla de formulario.

Seguridad para subprocesos

Los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para los subprocesos.

Vea también

Referencia

Miembros XmlForm

Espacio de nombres Microsoft.Office.InfoPath