如何从不同的WinForm(A)代码关闭不同的WinForm(B)?如何从另一个WinForm的代码中关闭不同的WinForm?
我已经拥有它设置了这样的WinForm(B)在winform(A)的代码被打开:
Form2 form2 = new Form2();
form2.ShowDialog();
如何从不同的WinForm(A)代码关闭不同的WinForm(B)?如何从另一个WinForm的代码中关闭不同的WinForm?
我已经拥有它设置了这样的WinForm(B)在winform(A)的代码被打开:
Form2 form2 = new Form2();
form2.ShowDialog();
您需要进行两处更改您的代码:
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();
}
您将需要添加一些逻辑,以确保您不能关闭窗体你已经打开了它面前,你不尝试关闭一个你已经关闭的表单。
ShowDialog
将打开form2
作为一个模态对话框,即程序执行不会继续下去,直到form2
关闭(由用户,或者在某些form2
的事件处理程序的。好像要打开form2
无模式, 。即致电Show
相反,你应该然后能够在任何时候打电话form2.Close()
边注意:形式与Show
打开会自动配置,一旦用户关闭他们(在另一方面,模态形式,即以ShowDialog()
显示的那些,必须手动为Dispose
d)。也就是说,您可能需要手动关闭form2
。我认为打电话Close
不会导致任何不愉快的事情发生,我认为它只是第二次调用Dispose
。
如果您将“Show”方法应用于Winform,则该方法会继续侦听Windows消息,如WM_CLOSE。但是如果你使用“ShowDialog”,你的winform就会变成“聋子”。
只要写form2.show(),和你的WinForm会做任何你想要:-)
当我使用展();我的form2冻结了。当使用ShowDialog时,我仍然能够以我的第一种形式处理方法。我不确定发生了什么,但我坚持使用它,因为这就是目前的工作内容... – sooprise 2010-05-28 18:59:02