2
myDialog d = new myDialog(); 
d.ShowDialog();

一旦我的对话框处理了一些输入,我就会做一个

this.Close();

从对话框类中。

然后回到我的主窗口,我检查一个变量,即

if (d.OK = true)
{
//do stuff
}

如果在使用程序时会创建几个这样的对话框,这可以吗?或者我应该在我的主窗体上使用一个引用同一个对话框的静态变量?这有什么不同吗?

4

3 回答 3

5

使用此模式,您的对话框将始终正确处理

using(myDialog d = new myDialog())
{
     if(DialogResult.OK == d.ShowDialog())
     { 
         //do stuff (for example, read some property values on the dialog)
         if(d.ExecuteSomeAction == true)
              // Do some action -> call a database query or something.....
     } 
}

使用静态变量来维护对话框的处理(在这种情况下,您应该调用this.Hide()not this.Close(),在我看来,这是一种不好的做法,除非您需要跟踪“状态条件”或向您的用户建议他们的最后输入。当您关闭应用程序时,您还应该非常小心地关闭静态变量。

于 2012-08-02T11:54:59.323 回答
1

一旦处理了一个表单就不能被重用,AFAIK。

于 2012-08-02T11:54:31.623 回答
1

你也可以考虑这个:

using (myDialog d = new myDialog())
{
   d.ShowDialog();

   if (d.OK)
   {
      // do stuff
    }
}

在最后一个大括号之后,您确定您的对话框被正确处理并且所有内存都被释放。像这样,您可以随心所欲地使用对话框。使用 ausing是一种很好的做法,可用于实现IDisposable接口的所有对象。

请参阅使用语句

于 2012-08-02T11:55:59.507 回答