创建窗体对象的最佳位置

时间:2010-05-13 13:28:28

标签: c# windows forms

我在c#2008中创建一个Windows应用程序,它将有大约8-10个对话框。我希望这些表格在整个程序的生命周期中存在。哪里是创建和存储对象的最佳位置?

我来自Delphi,其中Form对象通常存储在全局变量中。

我很想在静态的Program类中做到这一点。我应该把它们放在主窗体中吗?

感谢您帮助推出C#newb。

3 个答案:

答案 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
    }
}
相关问题