理论上你可以从一个表单(Form)派生出另一个类,但是这样做是否合适呢?我本能地认为不应该这样做,但我从未听说过任何像这样的规则。
我的意思是已经从Form派生出来的一些具体类。例如,如果我有class MyForm : Form
,那么问题是:我能从MyForm
中派生出新的类吗?
理论上你可以从一个表单(Form)派生出另一个类,但是这样做是否合适呢?我本能地认为不应该这样做,但我从未听说过任何像这样的规则。
我的意思是已经从Form派生出来的一些具体类。例如,如果我有class MyForm : Form
,那么问题是:我能从MyForm
中派生出新的类吗?
在创建新的Windows窗体时,您应该从Form派生。在Visual Studio中创建新窗体时,您获得的源文件已经派生自Form。
没有硬性规定禁止您派生一个Windows表单。如果您有充分的理由这样做(例如,在所有表单中引入一些项目共同功能),那就请继续。
从一个共同的基类Form-derived class派生表单是非常合理的,这对于让应用程序具有标准的外观和感觉非常有用。
我强烈推荐从BaseForm继承。这样做可以非常容易地使所有的EditForms看起来一样,因为你可以在基类上设置公共控件(如按钮),给它们设置背景颜色/图片等等。对于各种可以分组的表单也是一样的。 通常我会有一个BaseForm,然后根据其“组”再次创建一个BaseForm(编辑、列表、对话框等)
这样可以使你的WinApp看起来更加一致。
代码也是一样的,通常Edit form具有相似的代码基础:验证、保存逻辑等。你可以将所有这些逻辑放在基类中,然后在子类中实现一些抽象方法。
这个问题实际上取决于你派生类要做什么。
Form和许多类似的最终类被设计成执行许多复杂任务,以便为您提供与表单相关的活动的全部优势,而无需编写过多的代码。
规则可能是这样的:“如果您打算执行简单的窗口操作,并且如果它不会干扰常规行为,则最好不要从表单派生。”
或者由于表单很重,因此您可以通过从基类而不是从表单派生来节省内存和CPU时间。