我正在用c# 2008创建一个windows应用程序,它将有大约8-10个对话框。我希望这些表单在整个程序生命周期中都存在。哪里是创建和存储对象的最佳位置?
我来自Delphi,在那里表单对象通常存储在全局变量中。
我很想在static Program类中这样做。我应该把它们放在主窗体中吗?
感谢你帮助一个C#新手。
发布于 2010-05-13 21:36:58
一般来说,没有理由存储对话框以供重用。典型的场景是:
using( MyDialog dlg = new MyDialog() ) {
dlg.MyTextProperty = "Are you realy sure, you want do XY operation?";
dlg.MyNumberProperty = 15;
DialogResult rslt = dlg.ShowDialog( this ); // the "this" is current form or control
if ( rslt == DialogResult.OK ) {
object userInput = dlg.UserInput;
// do what you want with user input
}
}发布于 2010-05-13 21:33:11
为什么希望这些对话框存在于程序的整个生命周期中?一般来说,对话框是在需要的时候创建的,被使用,然后被销毁。如果您需要再次显示它,可以创建一个新的并使用它。
如果您有合法的理由保留它们,那么这很好,但是不要为此使用Program类。我假设您的应用程序有一个主窗体,所有其他应用程序都是从该窗体启动的。如果是这样的话,让它们成为该表单上的实例变量,并从那里使用它们。
发布于 2010-05-13 22:45:03
表单是昂贵的对象,它们有很多内部状态。如果创建数据的开销很大,则缓存是有意义的。表单的行为正好相反,创建它们的数据的成本很低。当Windows将数据换出到分页文件时,使用缓存数据的开销将变得很大。这种情况很可能发生在您的情况下,对话框不会经常使用。实际上,显示对话框需要更长的时间。
如果用来填充对话框的数据创建成本很高,那么可以缓存该数据,而不是表单。
https://stackoverflow.com/questions/2827122
复制相似问题