在.NET中从一个表单类派生

3

理论上你可以从一个表单(Form)派生出另一个类,但是这样做是否合适呢?我本能地认为不应该这样做,但我从未听说过任何像这样的规则。

我的意思是已经从Form派生出来的一些具体类。例如,如果我有class MyForm : Form,那么问题是:我能从MyForm中派生出新的类吗?


1
我相信你的意思是“从已经派生出子类的表单中派生出”。 - Peter Lillevold
6个回答

5

在创建新的Windows窗体时,您应该从Form派生。在Visual Studio中创建新窗体时,您获得的源文件已经派生自Form。


这很明显,与我的问题无关。 - agnieszka
我看到了,并且我已经给其他一些在这里有其他好答案的人点了赞。 - Arjan Einbu
可以创建自己的派生窗体类,并将其用作创建其他窗体的基础,这是可以的。这样做的原因包括:在各个窗体之间实现共同的外观和设计,添加新功能,例如“是否保存更改”等脏标志或撤消堆栈实现。 - Arjan Einbu

4

没有硬性规定禁止您派生一个Windows表单。如果您有充分的理由这样做(例如,在所有表单中引入一些项目共同功能),那就请继续。


2

从一个共同的基类Form-derived class派生表单是非常合理的,这对于让应用程序具有标准的外观和感觉非常有用。


1
我们成功地从表单派生了一个类,然后将项目中的所有表单都从它派生出来。这使我们能够轻松应用项目范围内的策略。我们所有的表单都具有一致的外观和感觉。这也使得每个表单记住其大小和位置变得容易。

1

我强烈推荐从BaseForm继承。这样做可以非常容易地使所有的EditForms看起来一样,因为你可以在基类上设置公共控件(如按钮),给它们设置背景颜色/图片等等。对于各种可以分组的表单也是一样的。 通常我会有一个BaseForm,然后根据其“组”再次创建一个BaseForm(编辑、列表、对话框等)

这样可以使你的WinApp看起来更加一致。

代码也是一样的,通常Edit form具有相似的代码基础:验证、保存逻辑等。你可以将所有这些逻辑放在基类中,然后在子类中实现一些抽象方法。


0

这个问题实际上取决于你派生类要做什么。

Form和许多类似的最终类被设计成执行许多复杂任务,以便为您提供与表单相关的活动的全部优势,而无需编写过多的代码。

规则可能是这样的:“如果您打算执行简单的窗口操作,并且如果它不会干扰常规行为,则最好不要从表单派生。”

或者由于表单很重,因此您可以通过从基类而不是从表单派生来节省内存和CPU时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接