FormEvents.Merge 事件

定义

在从用户界面上调用了“合并表单”命令时发生,或者在用 /aggregate 命令行开关启动 InfoPath 时发生。

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 

事件类型

例外

开发人员尝试绑定 InternalStartup 方法以外的某个位置的事件。

示例

在以下示例中, Merge 事件的事件处理程序设置变量以指示合并操作的状态,调用 MergeForm(XPathNavigator) 类的 XmlForm 方法来执行合并操作,并在合并完成后显示一条消息。

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

注解

重要提示合并 事件不应由开发人员在表单代码中实例化。 应仅从 Microsoft InfoPath 设计模式用户界面为表单级事件添加事件处理程序。 从设计模式用户界面向表单模板添加事件处理程序时,InfoPath 使用 EventManager 类和 类的成员FormEvents在表单代码文件的 InternalStartup 方法中生成代码,以将事件绑定到其事件处理程序。 有关如何在 InfoPath 设计模式下添加事件处理程序的信息,请参阅如何:添加事件处理程序。

Merge 事件是使用委托绑定的MergeEventHandler

可以使用 CancelableArgs 类的 MergeEventArgs 属性将 Cancel 属性设置为 true 来取消 Merge 事件。

如果取消事件,InfoPath 的工作方式取决于是否设置 MessageMessageDetails 属性,如下表所述。

仅将 Message 属性设置为消息字符串你的消息和“是否继续?” 具有“是”、“是”到“全部”和“取消”按钮。
仅将 MessageDetails 属性设置为消息字符串“Microsoft Office InfoPath 在合并以下表单时遇到了问题:formname.xml。” 以及包含“是”、“全部是”和“取消”按钮的详细消息。
MessageMessageDetails 属性设置为消息字符串您的消息,以及带有“是”、“全是”和“取消”按钮的详细消息。
不要设置 MessageMessageDetails 属性,也不要将它们都设置为 null 引用 (Visual Basic) 中 Nothing 或空字符串不显示对话框。

用户单击“是”、“全是”和“取消”按钮时的行为如下所示:

“是”按钮发生合并操作,用户必须对合并的每个表单单击“是”。
“全是”按钮发生合并操作,所有选中的表单都将合并。
“取消”按钮取消对所有表单的合并。 如果用户在单击“取消”之前对任何表单单击了“是”,则对这些表单的合并也将取消。

对象 MergeEventArgs 作为参数传递给窗体 的 Merge 事件的事件处理程序。 MergeEventArgs 对象提供可在 Merge 事件期间使用的属性,这些属性可通过编程方式与表单的基础 XML 文档进行交互并确定合并属性(例如合并的文件数量)。 MergeEventArgs 对象提供的属性仅在此事件期间可用。

在单个合并表单操作过程中,每个合并的文件将发生一次 Merge 事件(并运行其事件处理程序中的代码)。

重要说明:在 InfoPath 2003 对象模型中,合并操作完成后发生了一个 OnAfterImport 事件。 Microsoft InfoPath 对象模型不提供等效事件。 但是,在执行任何“ 合并 后”操作之前,可以通过比较 类的 IndexCount 属性 MergeEventArgs 的值,在 Merge 事件的事件处理程序中实现相同的功能,以确认合并操作已完成。

可以通过 Microsoft InfoPath Filler 中打开的表单中运行的代码访问此类型或成员。

适用于