vb.net中的窗体继承

组合查询时,三个窗体基本上是一样的,所以用到设计模式——模板方法,其中的关键就是继承,

1、构建一个父类窗体,此窗体是这三个窗体的父窗体,该窗体把公共的控件全部设置好。

2、创建子类窗体,右击项目——添加——继承的窗体,如下图


建立的窗体如下图所示:

 

问题随之而来,控件不能用,那相对控件的按钮的事件也没有办法实现。从网上查了好多资料,总结:早期版本的VS继承的窗体控件是可以用的,现在的就算把窗体的Modifiers的属性值改为public,也是不行的(个人分析所得,如果你有什么方法可以告诉我)。

然后另一种解决方案就是重写相应的方法,

1、    父窗体中把方法中的private变为PublicOverridable,这样子窗体就可以重写这个方法,

        Public Overrideable Sub btnOK_Click(sender As Object, e As EventArgsHandles btnOK.Click
        End Sub

 

      子类窗体中应该是这样写的,关键字为Overrides

        Public Overrides Sub btnOK_Click(sender As Object, e As EventArgsHandles btnOK.Click
                //方法的实现
        End Sub

2、如果说此事件或方法不能重写怎么办呢?这也很简单。

父类窗体中:

         Private Sub btnOK_Click(sender As Object, e As EventArgsHandles btnOK.Click
                btnOKClick()  '在子类窗体中重写此方法就行
        End Sub
        Public Overridable Sub btnOKClick()
        End

子类窗体中

        Public Overrides Sub btnOKClick()
                //方法的实现
        End Sub  

 

在这其中还出现一个问题,那就是”没有包含要从继承的组件的已生成程序集“。如下图

 

这是什么导致的呢?

查询相关资料,原来继承的时候必须要有exe文件或者dll文件,所以只要重新生成之后运行一下,就OK啦。


评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值