Compartir a través de


FormEvents.Merge Evento

Definición

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.

public:
 abstract event Microsoft::Office::InfoPath::MergeEventHandler ^ Merge;
public abstract event Microsoft.Office.InfoPath.MergeEventHandler Merge;
member this.Merge : Microsoft.Office.InfoPath.MergeEventHandler 
Public MustOverride Custom Event Merge As MergeEventHandler 

Tipo de evento

Excepciones

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

Ejemplos

En el ejemplo siguiente, el controlador de eventos para el evento Merge establece variables para indicar el estado de la operación de combinación, llama al MergeForm(XPathNavigator) método de la XmlForm clase para realizar la operación de combinación y muestra un mensaje cuando finaliza 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

Comentarios

Importante: El evento Merge no está pensado para que el desarrollador cree instancias en el código de formulario. Solo debe agregar controladores de eventos para eventos de nivel de formulario desde la interfaz de usuario del modo de diseño de Microsoft InfoPath. Al agregar un controlador de eventos a la plantilla de formulario desde la interfaz de usuario del modo de diseño, InfoPath genera código en el método InternalStartup del archivo de código de formulario mediante la EventManager clase y el miembro de la FormEvents clase 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 mediante el MergeEventHandler delegado.

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

Si cancela el evento, el funcionamiento de InfoPath depende de si se establecen las Message propiedades y MessageDetails como se describe en la tabla siguiente.

Establecer sólo la propiedad Message en una cadena de mensaje.El mensaje y "¿Desea continuar?" con los botones Sí, Sí a Todo y Cancelar.
Establecer sólo la propiedad MessageDetails en una cadena de mensaje."Microsoft Office InfoPath ha encontrado un problema al combinar el siguiente formulario: formname.xml". y el mensaje detallado con los botones Sí, 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í, Sí a todo y Cancelar.
No establezca las propiedades Message y MessageDetails , ni establézcalas en una referencia nula (Nothing en Visual Basic) 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í, Sí a todo y Cancelar son los siguientes:

Botón SíSe realiza la operación de combinación y el usuario debe hacer clic en Sí para que se combine cada uno de los formularios.
Botón Sí a todoSe realiza la operación de combinación y se combinan todos los formularios seleccionados.
Botón CancelarSe cancela la combinación de todos los formularios. Si el usuario había hecho clic en Sí para algún formulario antes de hacer clic en Cancelar, también se cancela la combinación de esos formularios.

El MergeEventArgs objeto se pasa como parámetro al controlador de eventos para el 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 OnAfterImport evento que se produce una vez completada la operación de combinación. El modelo de objetos de Microsoft InfoPath no proporciona un evento equivalente. Sin embargo, se puede lograr la misma funcionalidad en un controlador de eventos para el evento Merge comparando los valores de las Index propiedades y Count de la MergeEventArgs clase para confirmar que la operación de combinación está completa, antes de realizar cualquier operación "después de la combinación".

Únicamente se puede acceder a este tipo o miembro desde el código que se ejecuta en los formularios abiertos en Microsoft InfoPath Filler.

Se aplica a