Condividi tramite


Evento FormEvents.Merge

Si verifica quando viene richiamato il comando Unisci moduli dall'interfaccia utente o quando InfoPath viene avviato con l'opzione della riga di comando /aggregate.

Spazio dei nomi: Microsoft.Office.InfoPath
Assembly: Microsoft.Office.InfoPath (in microsoft.office.infopath.dll)

Sintassi

Public Event Merge As MergeEventHandler

Dim instance As FormEvents
Dim handler As MergeEventHandler

AddHandler instance.Merge, handler
public abstract event MergeEventHandler Merge

Eccezioni

Tipo eccezione Condizione

InvalidOperationException

Lo sviluppatore ha cercato di associare l'evento in una posizione diversa dal metodo InternalStartup.

Osservazioni

Importante:

Gli sviluppatori non devono creare un'istanza dell'evento Merge nel codice del modulo. È consigliabile aggiungere gestori eventi per eventi a livello di modulo solo dall'interfaccia utente in modalità progettazione di Microsoft Office InfoPath 2007. Quando si aggiunge un gestore eventi al modello di modulo dall'interfaccia utente in modalità progettazione, tramite InfoPath viene generato codice nel metodo InternalStartup del file di codice del modulo utilizzando la classe EventManager e il membro della classe FormEvents per associare l'evento al relativo gestore eventi. Per informazioni su come aggiungere gestori eventi in modalità progettazione di InfoPath, vedere Procedura: Aggiungere un gestore eventi.

L'evento Merge viene associato utilizzando il delegato MergeEventHandler.

L'evento Merge può essere annullato utilizzando la proprietà CancelableArgs della classe MergeEventArgs per impostare la proprietà Cancel su true.

Se si annulla l'evento, l'operazione eseguita da InfoPath dipende dall'impostazione delle proprietà Message e MessageDetails, come descritto nella tabella seguente.

Impostazione delle proprietà Message e MessageDetails

Finestra di dialogo e testo visualizzati

Impostazione solo della proprietà Message su una stringa di messaggio.

Messaggio impostato insieme a "Continuare?" e ai pulsanti , Sì a tutti e Annulla.

Impostazione solo della proprietà MessageDetails su una stringa di messaggio.

"Si è verificato un problema durante l'unione del modulo seguente: nomemodulo.xml." insieme al messaggio dettagliato impostato e ai pulsanti , Sì a tutti e Annulla.

Impostazione di entrambe le proprietà Message e MessageDetails su una stringa di messaggio.

Messaggio e messaggio dettagliato impostati insieme a "Continuare?" e ai pulsanti , Sì a tutti e Annulla.

Nessuna impostazione per le proprietà Message e MessageDetails oppure impostazione di entrambe le proprietà su null o su una stringa vuota.

Non viene visualizzata nessuna finestra di dialogo.

Quando un utente fa clic sui pulsanti , Sì a tutti e Annulla si verificano gli eventi seguenti:

Pulsante scelto

Evento di unione

Pulsante

Viene eseguita l'operazione di unione e l'utente deve fare clic su per ogni singolo modulo unito.

Pulsante Sì a tutti

Viene eseguita l'operazione di unione e tutti i moduli selezionati vengono uniti.

Pulsante Annulla

Viene annullata l'unione di tutti i moduli. Se l'utente ha fatto clic su per alcuni moduli prima di fare clic su Annulla, viene comunque annullata anche l'unione di tali moduli.

L'oggetto MergeEventArgs viene passato come parametro al gestore eventi per l'evento Merge di un modulo. L'oggetto MergeEventArgs implementa proprietà che possono essere utilizzate durante l'evento Merge per interagire a livello di programmazione con il documento XML sottostante di un modulo e per determinare le proprietà di unione, ad esempio il numero di file da unire. Le proprietà implementate dall'oggetto MergeEventArgs sono disponibili solo durante tale evento.

Durante una singola operazione di unione di moduli, l'evento Merge si verifica, e il codice nel relativo gestore eventi viene eseguito, una volta per ogni file unito.

Importante:

Nel modello a oggetti di InfoPath 2003 è disponibile un evento OnAfterImport che viene generato quando è stata completata l'operazione di unione. Il modello a oggetti di Microsoft Office InfoPath 2007 include un evento equivalente. È tuttavia possibile ottenere la stessa funzionalità in un gestore eventi per l'evento Merge confrontando i valori delle proprietà Index e Count della classe MergeEventArgs per verificare che l'operazione di unione sia stata completata, prima di eseguire eventuali operazioni successive all'unione.

A questo tipo o membro può accedere solo il codice in esecuzione in moduli aperti in Microsoft Office InfoPath 2007.

Esempio

Nell'esempio seguente viene utilizzato il gestore eventi per l'evento Merge per impostare le variabili per indicare lo stato dell'operazione di unione, per chiamare il metodo MergeForm(XPathNavigator) della classe XmlForm per eseguire l'operazione di unione e per visualizzare un messaggio al termine del processo di unione.

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

Vedere anche

Riferimenti

Classe FormEvents
Membri FormEvents
Spazio dei nomi Microsoft.Office.InfoPath