我在c#2008中创建一个Windows应用程序,它将有大约8-10个对话框。我希望这些表格在整个程序的生命周期中存在。哪里是创建和存储对象的最佳位置?
我来自Delphi,其中Form对象通常存储在全局变量中。
我很想在静态的Program类中做到这一点。我应该把它们放在主窗体中吗?
感谢您帮助推出C#newb。
答案 0 :(得分:4)
为什么要在程序的整个生命周期中存在这些对话框? 通常,会在需要时创建对话框,使用它们,然后销毁它们。如果您需要再次显示它,请创建一个新的并使用它。
如果你有合理的理由保留它们,那就没问题,但不要使用Program
类。我假设你的应用程序有一个主表单,所有其他人都可以从中启动。如果是这种情况,请在该表单上创建实例变量并从那里使用它们。
答案 1 :(得分:1)
表单是昂贵的对象,它们有很多内部状态。如果创建数据很昂贵,则缓存很有意义。表单行为正好相反,创建数据便宜。当Windows将数据换成分页文件时,使用缓存数据会变得很昂贵。在您的情况下很可能发生这种情况,对话框不会经常使用。它实际上需要更长来显示对话框。
如果要填充对话框的数据创建起来很昂贵,那么缓存该数据,而不是表单。
答案 2 :(得分:0)
通常,没有理由存储重复使用的对话框。典型情况是:
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
}
}