如何在一个WinForm的代码中关闭另一个不同的WinForm?

4

我如何从一个不同的窗体(A)的代码中关闭另一个不同的窗体(B)?

我已经设置好了在窗体(A)的代码中打开窗体(B):

Form2 form2 = new Form2();
form2.ShowDialog();
2个回答

5

您需要对代码进行两处更改:

  • 使用Show而不是ShowDialog,这样第一个窗口仍然可以处理事件。
  • 保留对您打开的窗体的引用。

以下是一些示例代码:

Form2 form2;

private void button1_Click(object sender, EventArgs e)
{
    form2 = new Form2();
    form2.Show();
}

private void button2_Click(object sender, EventArgs e)
{
    form2.Close();
}

您需要添加一些逻辑,以确保在打开表单之前无法关闭表单,并且不要尝试关闭已经关闭的表单。


当我使用Show()时,我的form2会冻结。当使用ShowDialog时,我仍然能够处理第一个表单中的方法。我不确定发生了什么,但我会坚持这个方式,因为目前它是有效的... - sooprise

0
如果您对Winform应用“Show”方法,它将继续监听Windows消息,例如WM_CLOSE。但是,如果您使用“ShowDialog”,您的Winform将变得“聋”。只需编写form2.show(),您的Winform就会按照您的意愿执行 :-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接