【发布时间】:2017-10-26 08:25:17
【问题描述】:
我有一个由设计师创建并设置的表单“MyForm.cs”。我需要它只是为了通知用户一个错误,并且在他单击其“确定”按钮后表单关闭并且我再也不需要它,除非发生相同的错误,这将是罕见的(这是一个已处理的错误)。
我可以通过两种方式显示表单:
未引用new MyForm().ShowDialog();
参考MyForm myForm = new MyForm();myForm.ShowDialog();
由于我不会重复使用表单,因此我认为不需要为其命名,最好使用未引用的语法?
用一个代替另一个有什么好处吗?
【问题讨论】:
-
只要使用
using System.Windows.Forms,它就会识别Form类实例化,这样两个语句都有效(我认为除了可读性之外没有其他好处,你可以使用var form = new Form()来简化声明) . -
如果你真的只需要它一次,你可以扔掉对表单的引用。但是请注意,使用
Show而不是ShowDialog会在完成后在表单上调用Dispose,因此您应该将引用存储到变量中。 -
我不是 WinForm 方面的专家,但作为最佳 OOP 实践,您应该避免在另一个类中实例化 Form。我假设您需要使用要重用的文本设置对话框吗?因此,我建议您在 Form 类上创建一个静态工厂方法并在那里传递设置参数(如对话框的文本),或者在 .ShowDialog() 中进行。
-
@Steve,我正在使用表单内的其他控件来显示 MessageBox 可以显示的更多信息。
-
你所说的“匿名”实际上是“未引用”,而你所说的“命名”只是“引用”。你不是用这段代码“命名”它。