Windows窗体-如何从父窗体调用子窗体的事件

本文关键字:窗体 调用 事件 Windows | 更新日期: 2023-09-27 17:57:34

我有MDI form项目和一个名为BaseForm的表单,它继承自Form,包括MDIparent在内的所有其他表单都继承自该BaseForm。我的一些子窗体可以编辑,所以我有Save按钮。如果有打开的可编辑子窗体,我还会要求保存在父窗体closing event上。我是这样做的:

 protected void IsEditable()
        {
            foreach (BaseForm f in MdiChildren)
            { 
                if (f.isEditable == true)
                {
                    MessageBox.Show("To Do Save" + f.GetType().ToString());
                    f.Close();
                }
            }
        }

问题是,我已经为chillen的Save button on click事件实现了一次save逻辑。我不想再写同样的代码了,所以有没有办法从上面的代码中调用事件(保存逻辑)。检查表格是否可编辑是在BaseForm表格中进行的。

Windows窗体-如何从父窗体调用子窗体的事件

您可以折射SaveButton_Click中的代码来调用一个名为SaveForm()的方法,将该方法公开,并:

protected void IsEditable()
    {
        foreach (ChildForm f in MdiChildren)
        { 
            if (f.isEditable == true)
            {
                f.SaveForm();
                f.Close();
            }
        }
    }