FormEvents.Merge 事件
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在从用户界面上调用了“合并表单”命令时发生,或者在用 /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 的工作方式取决于是否设置 Message 和 MessageDetails 属性,如下表所述。
仅将 Message 属性设置为消息字符串 | 你的消息和“是否继续?” 具有“是”、“是”到“全部”和“取消”按钮。 |
仅将 MessageDetails 属性设置为消息字符串 | “Microsoft Office InfoPath 在合并以下表单时遇到了问题:formname.xml。” 以及包含“是”、“全部是”和“取消”按钮的详细消息。 |
将 Message 和 MessageDetails 属性设置为消息字符串 | 您的消息,以及带有“是”、“全是”和“取消”按钮的详细消息。 |
不要设置 Message 和 MessageDetails 属性,也不要将它们都设置为 null 引用 (Visual Basic) 中 Nothing 或空字符串 | 不显示对话框。 |
用户单击“是”、“全是”和“取消”按钮时的行为如下所示:
“是”按钮 | 发生合并操作,用户必须对合并的每个表单单击“是”。 |
“全是”按钮 | 发生合并操作,所有选中的表单都将合并。 |
“取消”按钮 | 取消对所有表单的合并。 如果用户在单击“取消”之前对任何表单单击了“是”,则对这些表单的合并也将取消。 |
对象 MergeEventArgs 作为参数传递给窗体 的 Merge 事件的事件处理程序。 MergeEventArgs 对象提供可在 Merge 事件期间使用的属性,这些属性可通过编程方式与表单的基础 XML 文档进行交互并确定合并属性(例如合并的文件数量)。 MergeEventArgs 对象提供的属性仅在此事件期间可用。
在单个合并表单操作过程中,每个合并的文件将发生一次 Merge 事件(并运行其事件处理程序中的代码)。
重要说明:在 InfoPath 2003 对象模型中,合并操作完成后发生了一个 OnAfterImport 事件。 Microsoft InfoPath 对象模型不提供等效事件。 但是,在执行任何“ 合并 后”操作之前,可以通过比较 类的 Index 和 Count 属性 MergeEventArgs 的值,在 Merge 事件的事件处理程序中实现相同的功能,以确认合并操作已完成。
可以通过 Microsoft InfoPath Filler 中打开的表单中运行的代码访问此类型或成员。