2010-05-13 69 views
1

我创造了C#2008一个Windows应用程序,将有大约8-10对话框。我希望这些表格在整个项目的整个过程中都存在。哪里是创建和存储对象的最佳地点?最好的地方对象

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

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

谢谢你帮助一个C#福利局出来。

+0

谢谢你的提醒,大家好。我将根据需要创建表单,而不是事先创建它们。 德尔福其中默认行为的形式自动在应用statup创建再来。 再次感谢。 – 2010-05-13 15:25:34

回答

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 
    } 
} 
4

为什么你希望这些对话框在程序的整个生命周期中都存在? 一般,在需要他们的时候,习惯,然后被销毁创建对话框。如果您需要再次显示,请创建一个新的并使用它。

如果你有一个合理的理由让他们周围,那很好,但不要使用Program类。我假设你的应用程序有一个主要的形式,所有其他人都可以从中启动。如果是这种情况,请将它们变为该表单上的实例变量并从那里使用它们。

1

表格是昂贵的对象,它们有很多内部状态。如果创建数据很昂贵,缓存就很有意义。表单行为完全相反,创建他们的数据很便宜。 Windows将数据换出到页面文件后,使用缓存数据变得非常昂贵。这很可能发生在你的案例中,对话不会很频繁地使用。它其实需要更长显示对话框。

如果您的数据填写对话框的开销很大,那么缓存该数据,而不是表单。