如何让父窗体关闭子窗体

时间:2018-07-29 23:05:48

标签: c# winforms

我的主窗体打开子窗体。当子窗体关闭时,父窗体需要执行一些任务。父母如何知道子窗体已关闭。

我有一个解决方法-隐藏按钮,当孩子引发关闭事件时,我调用PerformeClick方法。

有没有更好(更正确)的方法?

3 个答案:

答案 0 :(得分:2)

实例化子窗体时,为您的主/父窗体添加一个侦听器事件。下面的示例:

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.CustomFormClosed += CloseListener;
        f2.Show();
    }

    private void CloseListener(object sender, EventArgs e, string test)
    {
        Console.WriteLine(test);
    }

针对自定义代表和事件进行了编辑

Form2代码:

    public delegate void CustomFormClosedHandler(object semder, FormClosedEventArgs e, string text);
    public event CustomFormClosedHandler CustomFormClosed;

    private void Form2_FormClosed(object sender, FormClosedEventArgs e)
    {
        CustomFormClosed(sender, e, "Hello World!");
    }

答案 1 :(得分:1)

一种方法是:

DialogResult的{​​{1}}事件处理程序中返回FormClosing

Form2

private void Form2_FormClosing(object sender, FormClosingEventArgs e) { this.DialogResult = DialogResult.OK; } 的新线程上运行模式ShowDialog(),然后等待Form1

DialogResult

答案 2 :(得分:0)

所有您需要做的:

1:以父级形式添加公共静态方法:

layout-components

2:在子窗体中添加一个(FormClosed)事件,该事件从父窗体中调用该方法:

table-components