首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建windows窗体对象的最佳位置

创建windows窗体对象的最佳位置
EN

Stack Overflow用户
提问于 2010-05-13 21:28:28
回答 3查看 673关注 0票数 1

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

我来自Delphi,在那里表单对象通常存储在全局变量中。

我很想在static Program类中这样做。我应该把它们放在主窗体中吗?

感谢你帮助一个C#新手。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-13 21:36:58

一般来说,没有理由存储对话框以供重用。典型的场景是:

代码语言:javascript
复制
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
    }
}
票数 0
EN

Stack Overflow用户

发布于 2010-05-13 21:33:11

为什么希望这些对话框存在于程序的整个生命周期中?一般来说,对话框是在需要的时候创建的,被使用,然后被销毁。如果您需要再次显示它,可以创建一个新的并使用它。

如果您有合法的理由保留它们,那么这很好,但是不要为此使用Program类。我假设您的应用程序有一个主窗体,所有其他应用程序都是从该窗体启动的。如果是这样的话,让它们成为该表单上的实例变量,并从那里使用它们。

票数 4
EN

Stack Overflow用户

发布于 2010-05-13 22:45:03

表单是昂贵的对象,它们有很多内部状态。如果创建数据的开销很大,则缓存是有意义的。表单的行为正好相反,创建它们的数据的成本很低。当Windows将数据换出到分页文件时,使用缓存数据的开销将变得很大。这种情况很可能发生在您的情况下,对话框不会经常使用。实际上,显示对话框需要更长的时间。

如果用来填充对话框的数据创建成本很高,那么可以缓存该数据,而不是表单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2827122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档