小编Iss*_*ber的帖子

Stackoverflow异常关闭表单

我在WinForms中遇到了问题.我创建了一个MDIParent-Form,我从MDIParent的Load中调用了一个ChildForm.我希望如果ChildForm关闭,MDIParent必须关闭,应用程序退出.这就是为什么我在MDIParent中为childForm写一个事件,所以如果ChildForm关闭FormClosed-Event将在MDIParent中触发,但它会抛出一个堆栈溢出异常.我知道有一个无限循环,但我不知道为什么......

   private void MDIParent1_Load(object sender, EventArgs e)
    {
        Form1 childForm = new Form1();
        childForm.MdiParent = this;
        childForm.FormClosed += childForm_FormClosed;
        childForm.Show();
    }

    void childForm_FormClosed(object sender, FormClosedEventArgs e)
    {
        this.Close(); 
        //{Cannot evaluate expression because the current thread is in a stack overflow state.}
    }
Run Code Online (Sandbox Code Playgroud)

但如果我使用

  Application.Exit();
Run Code Online (Sandbox Code Playgroud)

而不是this.Close()......一切正常......我想知道为什么......有人可以解释一下吗?

更新: 我在没有MDIParent的情况下尝试了相同的操作并且一切正常......但是如果我使用MDIParent,为什么会出现问题

c# stack-overflow winforms

4
推荐指数
1
解决办法
1448
查看次数

标签 统计

c# ×1

stack-overflow ×1

winforms ×1