DLL文件实现窗体的模板模式
机房合作版中第一次使用了模板方法,实现了类似窗体的界面和代码的复用。。窗体继承有两种方法,一种是通过继承选择器从已编译的程序集合里选择,另一种则是通过DLL文件的方式继承。个人觉得DLL还是比较方便的,也更符合解耦合的要求。假设模板有一点变更的话,只要改了从新编译就好了,好吧谁用谁知道。那么,这里就看看如何使用DLL来
第一步,编写DLL文件,封装父窗体
打开vs2010,新建项目,选择类库,然后删除它自带的类。这里我的父窗体是编辑好的,直接右击项目添加现有项到项目中。这些个步骤,就不需要上图了应该。这里,父窗体中的所有对象可以通过属性Modifiers来改变其它是私有、保护还是公共,已决定是否可以被继承。其实这个没什么用!OK,若父窗体编辑好了,就直接生成解决方案就好了。
这时候,这个DLL文件应该在,项目ClassLibrary1\ClassLibrary1\bin下。找到DLL文件,记住这个路径和DLL文件名。最好,直接把它考到项目下。
这里需要注意的是,假如一开始建项目时你选的不是类库。那么就需要到项目属性里,把应用程序类型改成类库即可。如图:
第二步,使用DLL文件
首先,我们需要找到DLL文件,添加引用。其次,建立一个空的窗体,在代码页里添加:Imports DLL文件名
这样,再通过如下代码,就可以实现对封装在DLL文件中的父窗体了。
Imports DLL文件名
Public Class frmInquireOnlineState
Inherits DLL文件名.封装的窗体名 End Class
总结:
1、模板模式通过抽象各个类的共同部分建立父类,实现对公共部分的代码复用。同时,这还保证了各个子类的结构稳定。
2、用DLL的文件的好处是,假如编译好了之后,需要再加入一个父类。这时可以将原来的类库项目,在加入新即可。也可重新编译,相对于使用继承选择器有更高的灵活性。
DLL文件实现窗体的模板模式的更多相关文章
- lib文件和dll文件
一. 简介 1.1 C++两种库文件 lib包含了函数所在的dll文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的dll提供,称为动态链接库dynamic link library. ...
- C语言dll文件的说明以及生成、使用方法
最近在搞一些小项目,由于要涉及到跟其它语言进行交互,动态链接库变成了不二的选择.为此也查阅了很多资料,将动态链接库的相关知识在此做一个整理. 一.动态链接库概述 动态链接库(Dynamic Link ...
- 编译可供C#调用的C/C++动态链接库dll文件
编译可供C#调用的C/C++动态链接库dll文件,C语言控制台应用程序,探索生成dll过程 由于项目需求,需要公司另一个团队提供相关算法支持,是用C语言编译好的dll库提供给我们进行调用. 但是拿到d ...
- (转)如果知道dll文件是面向32位系统还是面向64位系统的?
本文为转载文章,原文地址:http://www.cnblogs.com/qguohog/archive/2011/09/13/2174897.html,仅仅是记录供后续使用,如有侵权请通知删除. 在发 ...
- delphi 基础之三 编写和调用dll文件
delphi 编写和调用dll文件 Windows 的执行文件可以划分为两种形式程序和动态连接库 (DLLs).一般程序运行是用.EXE文件,但应用程序有时也可以调用存储在DLL的函数. 在如下几 ...
- 调用Dll里面的窗体
将窗体资源分装到DLL中并且调用 用Delphi生成DLL并封装窗体的示例 调用Dll里面的窗体 DLL文件 library Project2;{ Important note about DLL m ...
- Winform- IrisSkin.dll轻松实现窗体换肤功能
IrisSkin2.dll是一款很不错的免费皮肤控件,利用它可以轻松的实现winForm窗体换肤 然而IrisSkin2.dll只能在.NET Faremwork 4.0以及之前的版本使用,所以要在V ...
- Head First 设计模式系列之一----模板模式(java版)
开篇序言:四人帮的设计模式对于我这个菜鸟看着打瞌睡,后面果断买了一本head first的,感觉还可以像看报纸似的,花了一个寒假的晚上看了大半,确实内容也挺吸引人的,讲的很风趣.否则我也不可能,大过年 ...
- Delphi 封装Frame到Dll文件
做项目的时候,发现这个Frame很好用,为了省空间.调用和修改方便,就将Frame封装到dll(动态链接库)里面,确实很好使. 效果图如下: 上图是临时测试用的,忘了将Frame的align设置成al ...
随机推荐
- hdu4055
hdu4055 题意 给出一个长度为 n - 1 的字符串,要求构造一个包含数字 [1, n] 的排列,从第二位开始,'I' 表示当前位数字比前一位大,'D' 表示当前位数字比前一位小,'?' 表示可 ...
- 循序渐进学.Net Core Web Api开发系列【16】:应用安全续-加密与解密
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 应用安全除 ...
- Asyncio中Lock部分的翻译
Asyncio中Lock部分的翻译 Locks class asyncio.Lock(*, loop=None) 原始锁的对象. 这个基础的锁是一个同步化的组件,当它上锁的时候就不属于典型的协程了(译 ...
- Django-Filter源码解析一
Django Filter源码解析 最近在看Django-FIlter项目的源码,学习一下别人的开发思想: 整体介绍 首先,我从其中一个测试用例作为入口,开始了debug之路,一点一点的断点,分析它的 ...
- SLAM(一)----学习资料整理
转自:http://www.cnblogs.com/wenhust/ 书籍: 1.必读经典 Thrun S, Burgard W, Fox D. <Probabilistic robotics& ...
- LinkedIn实时低延迟数据抓取系统Databus开源
http://www.infoq.com/cn/news/2013/03/linkedin-databus
- STM32 TIMER OUTPUT DIAGRAM
- THE TOOLS TO MANAGE YOUR DATA ACROSS CLOUDS
http://blog.grexit.com/manage-data-across-clouds/ That the average small business uses a cloud servi ...
- IIS、Asp.net 编译时的临时文件路径
IIS上部署的ASP.NET站点都会在一个.Net Framework的特定目录下生成临时编译文件增加ASP.NET站点的访问性能,有时候需要手动去删除这些临时编译文件,特别是发布新版本代码到IIS后 ...
- 坐标的相对转换ClientToScreen与ScreenToClient
假如一个有一个TEdit的实例edt_Position,edt_Position所在容器有好几层,所在的窗体为frmMain.现要弹出一个FORM,FORM的容器为frmMain,弹出的位置在edt_ ...