FormEvents.Merge-Ereignis

Tritt ein, wenn der Befehl Formulare zusammenführen von der Benutzeroberfläche aufgerufen oder InfoPath über die /aggregate-Befehlszeilenoption gestartet wird.

Namespace:  Microsoft.Office.InfoPath
Assembly:  Microsoft.Office.InfoPath (in Microsoft.Office.InfoPath.dll)

Syntax

'Declaration
Public MustOverride Event Merge As MergeEventHandler
'Usage
Dim instance As FormEvents
Dim handler As MergeEventHandler

AddHandler instance.Merge, handler
public abstract event MergeEventHandler Merge

Ausnahmen

Ausnahme Bedingung
InvalidOperationException

Es wurde versucht, das Ereignis an einen anderen Speicherort als die InternalStartup-Methode zu binden.

Hinweise

Wichtig

Das Merge-Ereignis sollte nicht vom Entwickler im Formularcode instanziiert werden. Ereignishandler für Ereignisse auf Formularebene sollten nur über die Microsoft InfoPath-Entwurfsmodus-Benutzeroberfläche hinzugefügt werden. Wenn Sie der Formularvorlage über die Entwurfsmodus-Benutzeroberfläche einen Ereignishandler hinzufügen, wird in InfoPath mithilfe der EventManager-Klasse und des Members der FormEvents-Klasse in der InternalStartup-Methode der Formularcodedatei Code generiert, um das Ereignis an den zugehörigen Ereignishandler zu binden. Weitere Informationen zum Hinzufügen von Ereignishandlern im InfoPath-Entwurfsmodus finden Sie unter Vorgehensweise: Hinzufügen eines Ereignishandlers.

Die Bindung des Merge-Ereignisses erfolgt mithilfe des MergeEventHandler-Delegaten.

Das Merge-Ereignis kann mithilfe der CancelableArgs-Eigenschaft der MergeEventArgs-Klasse abgebrochen werden, um die Cancel-Eigenschaft auf true festzulegen.

Die Arbeitsweise von InfoPath hängt beim Abbrechen des Ereignisses davon ab, ob und wie Sie die Message- und MessageDetails-Eigenschaften, wie in der folgenden Tabelle beschrieben, festlegen.

Einstellung für Meldung und
Meldungsdetails

Dialogfeld und angezeigter Text

Legt nur die Message-Eigenschaft auf eine Meldungszeichenfolge fest.

Die Meldung und die Meldung "Möchten Sie den Vorgang fortsetzen?" mit den Schaltflächen Ja, Ja, alle und Abbrechen.

Legt nur die MessageDetails-Eigenschaft auf eine Meldungszeichenfolge fest.

"Beim Zusammenführen mit dem Formular: Formularname.xml ist ein Fehler auftreten." und die detaillierte Meldung mit den Schaltflächen Ja, Ja, alle und Abbrechen.

Legt sowohl die Message- als auch die MessageDetails-Eigenschaft auf eine Meldungszeichenfolge fest.

Die Meldung und detaillierte Meldung mit den Schaltflächen Ja, Ja, alle und Abbrechen.

Legen Sie die Message- und MessageDetails-Eigenschaften nicht fest oder legen Sie beide auf ein Nullverweis (Nothing in Visual Basic) bzw. auf eine leere Zeichenfolge fest.

Es wird kein Dialogfeld angezeigt.

Das Verhalten ist beim Klicken der Schaltflächen Ja, Ja, alle und Abbrechen folgendermaßen:

Schaltfläche, auf die geklickt wird

Zusammenführungsverhalten

Schaltfläche Ja

Der Zusammenführungsvorgang wird ausgeführt. Dabei muss der Benutzer für jedes zusammengeführte Formular auf Ja klicken.

Schaltfläche Ja, alle

Der Zusammenführungsvorgang wird ausgeführt. Dabei werden alle ausgewählten Formulare zusammengeführt.

Schaltfläche Abbrechen

Die Zusammenführung aller Formulare wird abgebrochen. Wenn der Benutzer vor dem Klicken auf die Schaltfläche Abbrechen weitere Formulare auf Ja geklickt hat, wird auch die Zusammenführung dieser Formulare abgebrochen.

Das MergeEventArgs-Objekt wird als Parameter an den Ereignishandler für das Merge-Ereignis eines Formulars übergeben. Das MergeEventArgs-Objekt stellt Eigenschaften bereit, die während des Merge-Ereignisses verwendet werden können, um mit dem einem Formular zugrunde liegenden XML-Dokument programmgesteuert zu interagieren und um die Zusammenführungseigenschaften, wie z. B. die Anzahl der zusammenzuführenden Dateien, festzulegen. Die von diesem MergeEventArgs-Objekt bereitgestellten Eigenschaften sind während dieses Ereignisses nicht verfügbar.

Während eines einzelnen Zusammenführungsvorgangs von Formularen tritt das Merge-Ereignis (mit Ausführung des Codes im zugehörigen Ereignishandler) jeweils einmal für die zusammengeführten Dateien ein.

Wichtig

Es gibt im InfoPath 2003-Objektmodell ein OnAfterImport-Ereignis, das nach Abschluss des Zusammenführungsvorgangs auftritt. Im Microsoft InfoPath-Objektmodell wird kein entsprechendes Ereignis bereitgestellt. Die gleiche Funktionalität kann jedoch in einem Ereignishandler für das Merge-Ereignis erreicht werden, indem die Werte der Eigenschaften Index und Count der MergeEventArgs-Klasse verglichen werden. Dadurch wird überprüft, ob der Zusammenführungsvorgang abgeschlossen ist, bevor "nachträgliche Zusammenführungsvorgänge" ausgeführt werden.

Auf diesen Typ oder dieses Mitglied kann nur über Code zugegriffen werden, der in Formularen ausgeführt wird, die in Microsoft InfoPath Filler geöffnet wurden.

Beispiele

Im folgenden Beispiel legt der Ereignishandler für das Merge-Ereignis Variablen fest, um den Status des Zusammenführungsvorgangs anzuzeigen. Des Weiteren ruft der Ereignishandler zum Ausführen des Zusammenführungsvorgangs die MergeForm(XPathNavigator)-Methode der XmlForm-Klasse auf und zeigt beim Abschluss der Zusammenführung eine Meldung an.

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

Siehe auch

Referenz

FormEvents Klasse

FormEvents-Member

Microsoft.Office.InfoPath-Namespace