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 ...
随机推荐
- Nodejs新手村指引——30分钟上手
概要 #准备工作 #开启简单的服务 #路由 #获取参数的三种方式 #静态文件 #数据库集成 #async解决多重嵌套问题 本文适合没有nodejs项目开发经验而又想对nodejs有个大概了解的你阅读, ...
- Windows栈溢出原理
1.栈是什么? 栈是一种运算受限的线性表 其限制是仅允许在表的一端进行插入和删除运算 这一端称为栈顶(TOP),相对的另一端称为栈底(BASE) 向一个栈插入新元素,称作进栈.入栈或压栈(PUSH) ...
- 玩转SpringCloud Spring Cloud 微服务
Spring Cloud 简介 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均 ...
- Git的一些常用命令
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 简单的说就是托管代码的便于多人开发的管理系统. 二.Git的一些命令,我详细的说一下 我是基于github给大家说一下git的一些常 ...
- Go语言笔记:struct结构遍历
package main import ( "fmt" "reflect" ) type User struct { Id int Name string // ...
- ant design的一些坑
1.在本地修改ant design的某些样式可以生效,但在线上就失效了.比如collapse组件里的箭头图标在本地和在线上的类名有变化,本地类名,线上类名:箭头图标的svg样式在线上会自动添加一个内联 ...
- RC4加密算法的原理及实现
RC4于1987年提出,和DES算法一样.是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥). 但不同于DES的是.RC4不是对明文进行分组处理,而是字节流的方式依次加密明文中的每个字节.解密 ...
- the difference between an embOS interrupt and a zero latency interrupt
the difference between an embOS interrupt and a zero latency interrupt is the interrupt priority lev ...
- sqlserver 2012 查询时提示“目录名称无效”
重装系统或者用360等软件清理了相应的临时文件导致解决:在运行中输入 %temp% 回车,会跳出找不到路径的提示,然后到提示的目录建没有找到的目录文件夹即可.
- java 输入一个字符串,打印出该字符串中字符的所有排列
import java.util.Scanner; public class Demo001 { public static void main(String[] args) { String str ...