如何从不同的WinForm(A)代码中关闭不同的WinForm(B)?
我已经设置好WinForm(B)在WinForm(A)的代码中打开了:
Form2 form2 = new Form2();
form2.ShowDialog();
答案 0 :(得分: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();
}
您需要添加一些逻辑,以确保在打开表单之前无法关闭表单,并且不要尝试关闭已经关闭的表单。
答案 1 :(得分:0)
ShowDialog
将打开form2
作为模式对话框,即在form2
关闭之前(由用户或某些form2
关闭,程序执行将不会继续事件处理程序。似乎你想打开form2
无模式,即打电话给Show
。然后你应该可以随时拨打form2.Close()
。
旁注:用Show
打开的表单会在用户关闭后自动处理。 (另一方面,模态形式,即用ShowDialog()
显示的形式,必须手动Dispose
d。)也就是说,当您使用form2
时,Close
可能已被处置。想手动关闭它。我认为在已处理的表单上调用Dispose
不会导致任何令人讨厌的事情,我认为它只是第二次调用{{1}}。
答案 2 :(得分:0)
你将“Show”方法应用于Winform,这个方法继续监听Windows消息,如WM_CLOSE。但如果你使用“ShowDialog”,你的winform会变得“聋”。
只需编写form2.show(),你的winform就会做你想做的事: - )