Freigeben über


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

Public Event Merge As MergeEventHandler

Dim instance As FormEvents
Dim handler As MergeEventHandler

AddHandler instance.Merge, handler
public abstract event MergeEventHandler Merge

Ausnahmen

Ausnahmetyp Bedingung

InvalidOperationException

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

Hinweise

Wichtig:

Das Merge-Ereignis sollte nicht im Formularcode instanziiert werden. Ereignishandler sollten Ereignissen auf Formularebene nur von der Entwurfsmodus-Benutzeroberfläche von Microsoft Office InfoPath 2007 aus hinzugefügt werden. Wenn Sie der Formularvorlage von der Entwurfsmodus-Benutzeroberfläche aus einen Ereignishandler hinzufügen, wird in InfoPath mithilfe der EventManager-Klasse und mithilfe 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.

Meldung und "MessageDetailsSetting"

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 null 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:

Im Objektmodell für InfoPath 2003 gibt es ein OnAfterImport-Ereignis, das nach dem Abschluss des Zusammenführungsvorgangs auftritt. Das Objektmodell für Microsoft Office InfoPath 2007 stellt kein entsprechendes Ereignis bereit. Die gleiche Funktionalität kann über einen Ereignishandler für das Merge-Ereignis erreicht werden, indem die Werte der Eigenschaften Index und Count der MergeEventArgs-Klasse verglichen werden. Dadurch wird bestätigt, dass der Zusammenführungsvorgang abgeschlossen ist, bevor "nachträgliche Zusammenführungsvorgänge" ausgeführt werden müssen.

Auf diesen Typ oder diesen Member kann nur über Code zugegriffen werden, der in Formularen ausgeführt wird, die mit Microsoft Office InfoPath 2007 geöffnet wurden.

Beispiel

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