2010-05-28 44 views

回答

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(); 
} 

您将需要添加一些逻辑,以确保您不能关闭窗体你已经打开了它面前,你不尝试关闭一个你已经关闭的表单。

+0

当我使用展();我的form2冻结了。当使用ShowDialog时,我仍然能够以我的第一种形式处理方法。我不确定发生了什么,但我坚持使用它,因为这就是目前的工作内容... – sooprise 2010-05-28 18:59:02

0

ShowDialog将打开form2作为一个模态对话框,即程序执行不会继续下去,直到form2关闭(由用户,或者在某些form2的事件处理程序的。好像要打开form2无模式, 。即致电Show相反,你应该然后能够在任何时候打电话form2.Close()

边注意:形式与Show打开会自动配置,一旦用户关闭他们(在另一方面,模态形式,即以ShowDialog()显示的那些,必须手动为Dispose d)。也就是说,您可能需要手动关闭form2。我认为打电话Close不会导致任何不愉快的事情发生,我认为它只是第二次调用Dispose

0

如果您将“Show”方法应用于Winform,则该方法会继续侦听Windows消息,如WM_CLOSE。但是如果你使用“ShowDialog”,你的winform就会变成“聋子”。

只要写form2.show(),和你的WinForm会做任何你想要:-)

相关问题