vb.net中的窗体继承
2015-11-17 15:48
316 查看
组合查询时,三个窗体基本上是一样的,所以用到设计模式——模板方法,其中的关键就是继承,
1、构建一个父类窗体,此窗体是这三个窗体的父窗体,该窗体把公共的控件全部设置好。
2、创建子类窗体,右击项目——添加——继承的窗体,如下图
![](https://img-blog.csdn.net/20151117153941462)
建立的窗体如下图所示:
![](https://img-blog.csdn.net/20151117154001954)
问题随之而来,控件不能用,那相对控件的按钮的事件也没有办法实现。从网上查了好多资料,总结:早期版本的VS继承的窗体控件是可以用的,现在的就算把窗体的Modifiers的属性值改为public,也是不行的(个人分析所得,如果你有什么方法可以告诉我)。
然后另一种解决方案就是重写相应的方法,
1、 父窗体中把方法中的private变为PublicOverridable,这样子窗体就可以重写这个方法,
Public Overrideable Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
End Sub
子类窗体中应该是这样写的,关键字为Overrides
Public Overrides Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
//方法的实现
End Sub
2、如果说此事件或方法不能重写怎么办呢?这也很简单。
父类窗体中:
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
btnOKClick() '在子类窗体中重写此方法就行
End Sub
Public Overridable Sub btnOKClick()
End
子类窗体中
Public Overrides Sub btnOKClick()
//方法的实现
End Sub
在这其中还出现一个问题,那就是”没有包含要从继承的组件的已生成程序集“。如下图
![](https://img-blog.csdn.net/20151117154021633)
这是什么导致的呢?
查询相关资料,原来继承的时候必须要有exe文件或者dll文件,所以只要重新生成之后运行一下,就OK啦。
1、构建一个父类窗体,此窗体是这三个窗体的父窗体,该窗体把公共的控件全部设置好。
2、创建子类窗体,右击项目——添加——继承的窗体,如下图
建立的窗体如下图所示:
问题随之而来,控件不能用,那相对控件的按钮的事件也没有办法实现。从网上查了好多资料,总结:早期版本的VS继承的窗体控件是可以用的,现在的就算把窗体的Modifiers的属性值改为public,也是不行的(个人分析所得,如果你有什么方法可以告诉我)。
然后另一种解决方案就是重写相应的方法,
1、 父窗体中把方法中的private变为PublicOverridable,这样子窗体就可以重写这个方法,
Public Overrideable Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
End Sub
子类窗体中应该是这样写的,关键字为Overrides
Public Overrides Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
//方法的实现
End Sub
2、如果说此事件或方法不能重写怎么办呢?这也很简单。
父类窗体中:
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
btnOKClick() '在子类窗体中重写此方法就行
End Sub
Public Overridable Sub btnOKClick()
End
子类窗体中
Public Overrides Sub btnOKClick()
//方法的实现
End Sub
在这其中还出现一个问题,那就是”没有包含要从继承的组件的已生成程序集“。如下图
这是什么导致的呢?
查询相关资料,原来继承的时候必须要有exe文件或者dll文件,所以只要重新生成之后运行一下,就OK啦。
相关文章推荐
- flex 控件的重要属性
- PostgreSQL教程(三):表的继承和分区表详解
- Delphi控件ListView的属性及使用方法详解
- VB.NET校验字符串函数
- Lua面向对象之类和继承浅析
- 浅析Ruby中继承和消息的相关知识
- web下载的ActiveX控件自动更新
- VB.NET实现验证信用卡卡号
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- VB.NET中TextBox的智能感知应用实例
- C++实现不能被继承的类实例分析
- MFC中动态创建控件以及事件响应实现方法
- WinForm自定义函数FindControl实现按名称查找控件
- Android控件之ProgressBar用法实例分析
- PHP类的封装与继承详解
- VB.NET获取文件默认图标的方法