我有一份包含2个mdi儿童表格的MDI表格。在子窗体上,我有一个共享的usercontrol(数据网格),并且usercontrol的工作方式完全相同,除了一个窗体上的过滤器。
一切正常,但是,我确实遇到了事件问题。我创建了几个事件处理程序来检测数据上发生的保存/搜索/加载等事情。但是,我不希望两个子表单都例如触发搜索事件。如果我在ChildForm1上搜索数据,我也不希望ChildForm2触发搜索事件。
我尝试使用Visible和IsAccessible来检测用户控件是否位于Mdi表单的前面,但这不起作用。
另一个选择是查看父级是否是活动的Mdi表单,但是,我有时会将几个小组作为父级等。这使得它成为未来开发或其他方案的难点解决方案。
有什么建议吗?
编辑:我目前正在做的是:
private void TransactionLoad_Event(object sender, EventArgs e)
{
if (loading) return;
Form parentForm = this.FindForm();
Form mdiParentForm = (Form)this.TopLevelControl;
if (mdiParentForm != null && parentForm != null && mdiParentForm.ActiveMdiChild == parentForm)
LoadTransactions();
}
感谢尤金。