【问题标题】:Form closed event not triggered in parent form父表单中未触发表单关闭事件
【发布时间】:2019-10-02 17:05:24
【问题描述】:

我现在有点头疼。

我有 2 个Forms 一个是父表单,另一个是子表单。

在父表单内我试图检测FormClosed 事件,我订阅了父表单内的事件以处理某些行为。

但是,当我关闭子表单时,FormClosed 事件永远不会被订阅或触发?我不确定做错了什么?我什至尝试过FormClosing 并没有触发任何东西?

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        using (var frm2 = new Form2())
        {
            frm2.ShowDialog();
            frm2.FormClosed += Frm2OnFormClosed;
        }
    }

    private void Frm2OnFormClosed(object sender, FormClosedEventArgs e)
    {
        // Implement further behaviour handling.
    }
}

【问题讨论】:

    标签: c# winforms events


    【解决方案1】:

    ShowDialog() 将阻止调用方法中的代码执行,直到新表单关闭。因此,您甚至在分配 EventHandler 之前就已经打开和关闭了 frm2。像这样切换你的两条线,你应该很高兴:

    frm2.FormClosed += Frm2OnFormClosed;
    frm2.ShowDialog();
    

    【讨论】:

    • 太棒了!这是绝对有道理的。谢谢 :) 这解决了我的问题。
    猜你喜欢
    • 2011-10-04
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2011-05-07
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多