如果我有一个自定义对话框窗口,每次都可以创建一个新窗口吗?

时间:2012-08-02 11:52:35

标签: c# dialog

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

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

this.Close();

来自对话框类。

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

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

如果在使用程序时会创建其中几个对话框,这样可以吗?或者我应该在我的主窗体上使用引用相同对话框的静态变量?它有所作为吗?

3 个答案:

答案 0 :(得分: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()而不是this.Close(),在我看来,这是一种不好的做法,除非你需要跟踪一个'状态条件'或向用户提出他们的最后输入。当你关闭应该关闭静态变量时,你也应该非常小心。

答案 1 :(得分:1)

一旦处理完毕,表格将无法重复使用,AFAIK。

答案 2 :(得分:1)

你也可以考虑这个:

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

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

在最后一个大括号后,您确定对话框正确处理并释放所有内存。 像这样你可以根据需要使用对话框。使用using是一种很好的做法,可以在实现IDisposable接口的所有对象上使用。

请参阅using Statement