在C#中,什么';Windows中窗体的首选定义是什么?
在具有在C#中,什么';Windows中窗体的首选定义是什么?,c#,.net,C#,.net,在具有formMain和一些其他表单(formAccount,formPerson等)的应用程序中 (1) 将单独的表单定义为单独的类,并在需要时创建(实例化)它们: class FormAccount : Form { public FormAccount(...) { ... } } class FormMain : Form { public FormMain(...) { ... } } class Program {
formMain
和一些其他表单(formAccount
,formPerson
等)的应用程序中
(1) 将单独的表单定义为单独的类,并在需要时创建(实例化)它们:
class FormAccount : Form {
public FormAccount(...) {
...
}
}
class FormMain : Form {
public FormMain(...) {
...
}
}
class Program {
FormMain formMain = new FormMain();
static void SomeFoo() {
...
FormAccount formAccount = new FormAccount();
...
}
static int Main(string[] argv) {
...
Application.Run(formMain);
return (0);
}
}
或
(2) 在一个类中定义每个表单,并在需要时使用formXxxx.Show()
class Program {
Form formMain = new Form();
Form formAccount = new Form();
static int Main(string[] argv) {
...
Application.Run(formMain);
return (0);
}
}
第一种似乎对内存友好,因为不时关闭的窗体将释放堆内存。然而,有些表单是定期打开和关闭的,在我看来,这些表单最好能留在记忆中
定义这些形式的偏好是什么?从理论上讲,没有关于形式的指南。但是,如果您使用像VisualStudio这样的IDE,它们确实存在。VisualStudio设计器要求要编辑的表单必须是文件的第一个类,并且只能对第一个类进行可视化编辑 学习Winforms编程有两种基本方法:试用和出错或阅读书籍/教程。由于您希望以试用方式进行此操作,因此首先需要使用方法2。很多错误,您将了解ObjectDisposedException的含义,这一点非常重要。@HansPassant:我想我知道您的意思,但对于后一种情况,除
formMain
之外的表单将不会被关闭/终止(关闭按钮将被禁用)。单击formMain
上的一个按钮将Visible
属性切换为true
,用于formAccount
上的另一个按钮将Visible
属性切换为false
。您认为在这种情况下我仍然会得到ObjectDisposedException吗?VS设计器负责为每个表单定义一个类,此外,它还分离了关注点(请参见SOLID主体的“S”)。我会这样做,因为你有工具支持,你可以把特定于表单的代码放在它的类中,与其他表单代码分开。表单只是类。对于任何一次性资源,请遵循相同的做法。