VB.net中的窗体继承

再说vb.net中的窗体继承之前,我们先来说说什么是继承?

继承是指一个对象直接使用另一对象的属性和方法。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。同类事物具有共同性,在同类事物中,每个事物又具有其特殊性。运用抽象的原则舍弃对象的特殊性,抽取其共同性,则得到一个适应于一批对象的类,这便是基类(父类),而把具有特殊性的类称为派生类(子类),派生类的对象拥有其基类的全部或部分属性与方法,称作派生类对基类的继承。

那么继承和接口的区别呢?

  一、两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。这些听起来有些虚,举个例子。例如,狗是对于所有狗类动物的统称,藏獒是狗,哈士奇是狗,那么狗的一般特性,都会在哈士奇及藏獒中找到,那么狗相对于哈士奇及藏獒来说,就属于这类事物的抽象类型;而对于“叫”这个动作来说,狗可以叫,鸟也可以叫。很明显,前者相当于所说的是抽象类,而后者指的就是接口。

  二、抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;而对于接口来说,其中所定义的方法都不能给出实现部分。

  三、继承类对于两者所涉及方法的实现是不同的。继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以延用抽象类的方法;而对于接口类所定义的方法或者属性来说,在继承类中必须要给出相应的方法和属性实现。

  四、在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;而对于接口来说,则需要修改继承类,提供新定义的方法。

下面我们来说vb.net中的窗体继承,其实在vb,net也存在接口的实现,这里不作为重点。我们先来说窗体继承。

先说说使用窗体继承的背景:

其实也可以不使用窗体继承,只是敲同样的窗体多了,边想着能不能有个什么办法来让这些东西的生成变得简单点,这样不仅仅减少代码的书写量,同样也可以使得生成窗体的设计变得简单,不再那么多的重复。

在v.net个人版机房重构中,我们不难发现,其实组合查询的窗体是大同小异的,除了字段不一样,还有需要查询不同的表,或者就是datagridview中的列标题及要显示的数据不一样外,其它的东西是一样的,那么这样的话,我们就可以“偷懒了”。

我们可以定义一个父窗体,让具有相同功能的窗体继承这个窗体,也就是子窗体,我们可以将共同的方法写出来,对于其它实现不同的,我们可以定义一个虚的方法,让它在子窗体中得到具体的实现,比如,表的获得,字段的英汉转换还有就是获得datagridview中列表名,这样的话,在子窗体中我们就可以随心而用了。

先说如何建立继承窗体:

先建立一个父窗体,之后对于vs2012来说,点击添加—windows窗体—windows Forms—继承窗体,如下图:


之后可以对窗体进行重新命名,之后点击添加出现以下界面


选择要继承的窗体,之后点击“确定即可”。

如果直接继承来的窗体,其子窗体的控件属性为灰色,即是不可以修改的,要想修改,就要把父窗体的modifier属性设置为public即可,之后还是不行,此时点击重新生成即可。

现在好了,窗体建好了,之后我们便可以添加抽象出哪些相同的部分,写在父窗体里面,那么特殊性的,定义一个虚的方法,之后在子窗体中只需要实现那么特殊性的,共同的代码就不用再写了,小伙伴们,试试吧!

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...