对比第一次敲的机房收费系统,会发现很多窗体的界面基本相同,部分功能甚至基本相似。比如说操作员菜单下的充值和退卡这两个窗体:


这样如果一个一个窗体画出来,就做了很多重复的工作。VB.NET和C#都是完全面向对象的语言,而面向对象的三大特性是封装、继承、多态,出了在代码、功能上来体现,在设计窗体时是不是也可以用到呢?答案当然是YES!
如果一个程序中有多个界面相似,就可以考虑通过继承来实现,先建立一个父窗体,然后让子窗体来继承它,相同的代码就可以写在父窗体中,各自的功能分别写在不同的子窗体中,实现想要的功能。
具体实现过程如下:
1.添加普通的Windows窗体,建立模板。(建好后需要重新生成解决方案)

2.选择项目菜单下的添加新项,在弹出的窗体中做如下选择:

3.选择“添加”按钮,在弹出的窗体中选择要继承的父窗体,点确定即可。(如果第1步没有重新生成解决方案,那么在这里父窗体就不会显示出来。)

4.继承来的充值子窗体:

基本上已经完成了,但是会发现继承来的子窗体中的控件都是锁定的,如果想要通过这些控件添加一些新的功能,就需要将父窗体中的控件Modifiers属性设置为Public,这样就可以了。
当我们做了很多重复的事情时,就应该停下来思考一下,有没有更好的方法。思想是行动的先导,首先要思考,然后再行动。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yiwangxiblog/article/details/50074059