myDialog d = new myDialog();
d.ShowDialog();
一旦我的对话框处理了一些输入,我就做了
this.Close();
来自对话框类。
然后回到我的主窗口,我检查一个变量,即
if (d.OK = true)
{
//do stuff
}
如果在使用程序时会创建其中几个对话框,这样可以吗?或者我应该在我的主窗体上使用引用相同对话框的静态变量?它有所作为吗?
答案 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。