Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Cómo: Responder a eventos de formulario con el modelo de objetos de InfoPath 2003

Office 2013 y posterior

Última modificación: lunes, 09 de marzo de 2015

Hace referencia a: InfoPath 2013 | InfoPath Forms Services | Office 2013 | SharePoint Server 2013

Es posible escribir código para responder a diversos eventos que pueden ocurrir cuando un usuario rellena un formulario. Para trabajar con eventos en InfoPath, se deben crear controladores de eventos en el diseñador de InfoPath.

Los controladores de eventos de InfoPath se deben crear en el diseñador de InfoPath, ya que, al usar el modelo de objetos compatible con InfoPath 2003, InfoPath agrega automáticamente la declaración correcta y aplica un atributo (InfoPathEventHandlerAttribute) al archivo de código del formulario (FormCode.cs o FormCode.vb) para identificar y recibir el controlador de eventos. Una vez creado un controlador de eventos, no se debe modificar su declaración ni su atributo en el archivo de código del formulario.

Para obtener más información sobre cómo crear controladores de eventos de InfoPath, consulte Cómo: Agregar un controlador de eventos mediante el modelo de objetos de InfoPath 2003.

El modelo de objetos compatible con InfoPath 2003 implementa nueve objetos de eventos que se exponen en el espacio de nombres Microsoft.Office.Interop.InfoPath.SemiTrust. En la siguiente tabla se muestran todos los objetos de eventos de InfoPath, los controladores de eventos a los que están asociados y la descripción de la funcionalidad que aportan.

Nombre

Controladores de eventos

Descripción

DataDOMEvent

OnBeforeChange

OnValidate , OnAfterChange

Devuelve una referencia al documento XML subyacente de un formulario, el estado de retorno y otras propiedades que contienen información sobre el nodo XML durante un cambio de Modelo de objetos de documento (DOM) XML. También incluye un método para generar un error.

DocActionEvent

OnClick

Devuelve una referencia al documento XML subyacente de un formulario, el estado de retorno y el nodo XML de origen cuando se hace clic en un botón del área del formulario.

DocContextChangeEvent

OnContextChange

Devuelve información sobre el nodo del Modelo de objetos de documento XML (DOM) que es el contexto actual del documento XML subyacente del formulario.

DocEvent

OnSwitchView , OnAfterImport

Devuelve una referencia al documento XML subyacente de un formulario al realizar una operación de cambio de vista o combinación de formularios.

DocReturnEvent

OnLoad , OnSubmitRequest

Devuelve una referencia al documento XML subyacente de un formulario y el estado de retorno durante la carga o el envío de un formulario.

MergeEvent

OnMergeRequest

Devuelve las propiedades y los métodos que se pueden utilizar durante un evento OnMergeRequest para interaccionar mediante programación con un documento XML subyacente del formulario y determinar las propiedades de combinación, como el número de archivos que se combinan.

SaveEvent

OnSaveRequest

Devuelve propiedades y métodos que se pueden usar durante la operación para guardar desde el controlador de eventos OnSaveRequest para interaccionar mediante programación con un documento XML subyacente del formulario, determinar las propiedades de guardado y realizar la operación de guardado.

SignEvent

OnSign

Se utiliza para agregar datos adicionales a la firma digital.

VersionUpgradeEvent

OnVersionUpgrade

Devuelve una referencia al documento XML subyacente de un formulario, el estado de retorno así como los números de versión del documento y la solución durante la operación de actualización de versiones.

Al crear un controlador de eventos, InfoPath crea la declaración de éste en el archivo de código de formulario del proyecto (FormCode.cs o FormCode.vb). En la declaración del controlador de eventos, InfoPath utiliza e como nombre del parámetro que se transmite al controlador de eventos. Este parámetro contiene el objeto de eventos que está asociado al controlador de eventos.

Por ejemplo, si se crea un controlador de eventos para el evento OnLoad en el modo de diseño (haciendo clic en Evento Al cargar (OnLoad) en la ficha Programador), InfoPath agrega la declaración del controlador de eventos que recibe el objeto DocReturnEvent al archivo de código de formulario y, después, abre el Editor de código para que pueda agregar el código a la siguiente declaración del controlador de eventos.

// The following function handler is created by Microsoft Office 
// InfoPath. Do not modify the type or number of arguments.
[InfoPathEventHandler(EventType=InfoPathEventType.OnLoad)]
public void FormEvents_OnLoad(DocReturnEvent e)
{
   // Write your code here.

}

' The following function handler is created by Microsoft Office 
' InfoPath. Do not modify the type or number of arguments.
<InfoPathEventHandler(EventType:=InfoPathEventType.OnLoad)> _
Public Sub FormEvents_OnLoad(ByVal e As DocReturnEvent)
   ' Write your code here.

End Sub

Al escribir código para un controlador de eventos, puede utilizar las propiedades y los métodos implementados por el objeto de eventos que se transmite mediante el parámetro e. Por ejemplo, en el controlador de eventos OnBeforeChange que se muestra a continuación, la propiedad NewValue del objeto de eventos DataDOMEvent se utiliza para comprobar el valor del campo que se acaba de cambiar. Si está en blanco, la propiedad ReturnMessage del objeto de eventos DataDOMEvent se utiliza para mostrar un error al usuario en un cuadro de diálogo y la propiedad ReturnStatus se establece en false, para indicar que los cambios que ha realizado el usuario no se deberían aceptar.

[InfoPathEventHandler(MatchPath="/my:myFields/my:field1", 
    EventType=InfoPathEventType.OnBeforeChange)]
public void field1_OnBeforeChange(DataDOMEvent e)
{
   // Determine whether there is a new value.
   if ((string)e.NewValue == "")
   {
      // The value is blank, so display an error message and roll
      // back the changes.
      e.ReturnMessage = "You must supply a value for this field.";
      e.ReturnStatus = false;
      return;
   }
}
NotaNota

Cada uno de los objetos de eventos de InfoPath del modelo de objetos compatibles con InfoPath 2003 implementa propiedades y métodos diferentes. Para obtener más información sobre un objeto de eventos concreto, haga clic en él en la tabla de objetos de eventos anterior.

Mostrar: