gpt4 book ai didi

c# - 如何识别活跃的子窗体并触发通用方法(每个子窗体中都存在)?

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:55 25 4
gpt4 key购买 nike

我有一个主(MDI)窗体和大约 70 个已初始化并显示的子窗体在运行时。一次可能会显示超过 1 个子窗体。在每个子表单有名为“OK”的按钮及其事件“btnOk_click(object sender, EventArgs e)”。在父表单中有一个名为“保存”的按钮,如果我们点击它,在运行时应该触发 activeMDI 子窗体事件 (btnOk_click)。

请帮我解决这个问题。

目前我通过使用以下代码来解决这个问题

 switch (ActiveMdiChild.GetType().Name)
{
case "frmSalesOrder":
case "frmPurchaseOrder":
case "frmSizeRatio":
break;
case "frmUserGroup":
var _frmUserGroup = (frmUserGroup)this.ActiveMdiChild;
_frmUserGroup.btnOK.PerformClick();
_frmUserGroup = null;
break;
case "frmUser":
var _frmUser = (frmUser)this.ActiveMdiChild;
_frmUser.btnOK.PerformClick();
_frmUser = null;
break;

谢谢约瑟夫·J

最佳答案

接口(interface)真的可以在这里帮助你:

interface IChildSave {
void SaveAction();
}

然后在您的每个子表单中实现它:

public partial class Form1 : Form, IChildSave {

public void SaveAction() {
saveButton.PerformClick();
}

private void saveButton_Click(object sender, EventArgs e) {
// save routine
}
}

那么您的 MDI Parent 表单将不再需要 Switch 语句:

if (this.ActiveMdiChild is IChildSave) {
((IChildSave)this.ActiveMdiChild).SaveAction();
} else {
MessageBox.Show("Child Form does not implement IChildSave.");
}

关于c# - 如何识别活跃的子窗体并触发通用方法(每个子窗体中都存在)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10011600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com