Compartir a través de


FormEvents.Merge (Evento)

Se produce cuando se invoca el comando Combinar formularios desde la interfaz de usuario o InfoPath se inicia con el modificador de la línea de comandos /aggregate.

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

Sintaxis

Public Event Merge As MergeEventHandler

Dim instance As FormEvents
Dim handler As MergeEventHandler

AddHandler instance.Merge, handler
public abstract event MergeEventHandler Merge

Excepciones

Tipo de excepción Condición

InvalidOperationException

El programador intentó enlazar el evento en una ubicación que no es el método InternalStartup.

Comentarios

Importante:

El programador no debe crear instancias del evento Merge en el código de formulario. Sólo se deben agregar controladores de eventos para eventos de nivel de formulario desde la interfaz de usuario del modo de diseño de Microsoft Office InfoPath 2007. Al agregar un controlador de eventos a la plantilla de formulario desde la interfaz de usuario de modo de diseño, InfoPath genera código en el método InternalStartup del archivo de código de formulario mediante la clase EventManager y el miembro de la clase FormEvents para enlazar el evento a su controlador de eventos. Para obtener información sobre cómo agregar controladores de eventos en el modo de diseño de InfoPath, vea Cómo agregar un controlador de eventos.

El evento Merge se enlaza utilizando el delegado MergeEventHandler.

El evento Merge se puede cancelar utilizando la propiedad CancelableArgs de la clase MergeEventArgs para establecer la propiedad Cancel en true.

Si cancela el evento, el funcionamiento de InfoPath depende de como se establezcan las propiedades Message y MessageDetails que se describen en la siguiente tabla.

Message y MessageDetailsSetting

Cuadro de texto y texto mostrado

Establecer sólo la propiedad Message en una cadena de mensaje.

El mensaje y "¿Desea continuar?" con los botones , Sí a todo y Cancelar.

Establecer sólo la propiedad MessageDetails en una cadena de mensaje.

"Se ha producido un problema de Microsoft Office InfoPath para combinar el siguiente formulario: nombreDeFormulario.xml." y el mensaje pormenorizado, con los botones , Sí a todo y Cancelar.

Establecer las propiedades Message y MessageDetails en una cadena de mensaje.

El mensaje y el mensaje pormenorizado con los botones , Sí a todo y Cancelar.

No establecer las propiedades Message y MessageDetails, o establecer las dos en null o en una cadena vacía.

No se muestra ningún cuadro de diálogo.

Los comportamientos que se producirán cuando un usuario haga clic en los botones , Sí a todo y Cancelar son los siguientes:

Botón en que se hace clic

Comportamiento de combinación

Botón

Se realiza la operación de combinación y el usuario debe hacer clic en para que se combine cada uno de los formularios.

Botón Sí a todo

Se realiza la operación de combinación y se combinan todos los formularios seleccionados.

Botón Cancelar

Se cancela la combinación de todos los formularios. Si el usuario había hecho clic en para algún formulario antes de hacer clic en Cancelar, también se cancela la combinación de esos formularios.

El objeto MergeEventArgs se pasa como parámetro al controlador de eventos del evento Merge de un formulario. El objeto MergeEventArgs proporciona propiedades que se pueden usar durante el evento Merge para interactuar mediante programación con el documento XML subyacente de un formulario y determinar propiedades de combinación como el número de archivos que se va a combinar. Las propiedades que proporciona el objeto MergeEventArgs sólo están disponibles durante este evento.

Durante una operación de combinación de formularios, se producirá el evento Merge (y se ejecutará el código de su controlador de eventos) una vez por cada archivo que se vaya a combinar.

Importante:

En el modelo de objetos de InfoPath 2003, hay un evento OnAfterImport que ocurre después de completarse satisfactoriamente una operación de combinación. El modelo de objetos de Microsoft Office InfoPath 2007 también tiene un evento equivalente. Sin embargo, puede obtenerse la misma funcionalidad en un controlador del evento Merge mediante la comparación de los valores de las propiedades Index y Count de la clase MergeEventArgs para confirmar que la operación de combinación ha finalizado, antes de realizar operaciones "post combinación".

Se puede tener acceso a este tipo o miembro solamente desde un código ejecutado en formularios abiertos en Microsoft Office InfoPath 2007.

Ejemplo

En el siguiente ejemplo, el controlador de eventos del evento Merge establece variables para indicar el estado de la operación de combinación, llama al método MergeForm(XPathNavigator) de la clase XmlForm para realizar la operación de combinación y muestra un mensaje al terminar la combinación.

private bool _merging = false;
public void FormEvents_Merge(object sender, MergeEventArgs e)
{
   // Set global property to indicate that forms are being merged.
   if (e.Index == 0)
   {
      _merging = true;
   }
   // Merge the current form.
   MergeForm(e.Xml);
   e.CancelableArgs.Cancel = false;

   // Check to see if merging is finished.
   if ((e.Index + 1) == e.Count)
   {
      _merging = false;
      MessageBox.Show("Your request to merge " + e.Count + 
         " files is now complete.");
      // Perform any "after merge" operations here.
   }
}
Private _merging As Boolean = False
Public Sub FormEvents_Merge(ByVal sender As Object, _
   ByVal e As MergeEventArgs)
   ' Set global property to indicate that forms are being merged.
   If (e.Index = 0) Then
      _merging = True
   End If

   ' Merge the current form.
   MergeForm(e.Xml)
   e.CancelableArgs.Cancel = False

   ' Check to see if merging is finished.
   If ((e.Index + 1) = e.Count) Then
      _merging = False
      MessageBox.Show("Your request to merge " + e.Count + 
         " files is now complete.")
      ' Perform any "after merge" operations here.
   End If
End Sub

Vea también

Referencia

FormEvents (Clase)
FormEvents (Miembros)
Microsoft.Office.InfoPath (Espacio de nombres)