WinForm创建自定义控件
虽然VS为我们提供了很多控件可以使用,但有时候这些控件仍然不能满足我们的要求,比如我们要对部分控件进行一些个性化的定制,例如美化控件,这时候就需要自己绘制控件,或是在原有控件的基础上进行修改
自定义控件分为三种
1、组合控件(CompositeControls):在原有控件的基础上根据需要进行组合
2、扩展控件(ExtendedControls):继承自原有控件,添加一些新的属性和方法,绘制一些新元素
3、自定义控件(CustomControls):控件的绘制全部由用户定义
1、组合控件
新建项目,拖入需要的控件,就像在窗体一样


编译生成,可以查看控件的外观

在生成的目录可以找到相应的控件库文件CompositeControl.dll

这样组合控件的dll就做好了,用法后面再讲
2、扩展控件
首先,添加一个类库

引用两个命名空间 System.Drawing 和 System.Windows.Forms ,类改名为为ButtonEx,继承自Button

注意,扩展控件编译生成后并不能调用可视化工具查看,只生成了dll文件,需要引入到项目中使用才能看到
3、自定义控件
自定义控件添加方法跟扩展控件一样,只是最后类是继承自Control类的

接下来是把控件库引入到项目中使用
如果项目和控件库项目在同一解决方案中的话,控件会自动引入到工具箱

如果在不同项目中

浏览 选择库文件,然后将该控件打钩

将控件拖到窗体中

摘自http://www.cnblogs.com/bomo/archive/2012/12/09/2810559.html
WinForm创建自定义控件的更多相关文章
- WPF中添加Winform用户自定义控件
过程:创建WPF工程->创建Winform用户自定义控件工程->WPF中引用控件->添加到Xaml页面 1.首先在WPF工程的解决方案上右击选择添加新建项目: 选择Windows窗体 ...
- [翻译]使用Swift在Xcode中创建自定义控件
使用Swift在Xcode中创建自定义控件 原文 IBDesignable and IBInspectable With IBDesignable and IBInspectable, develop ...
- winform制作自定义控件(入门)
原文链接:http://blog.csdn.net/bychentufeiyang/article/details/7081402 与原文基本一致,只是例子变成VS2012环境,语言采用博主常用的 ...
- Android学习之基础知识五—创建自定义控件
下面是控件和布局的继承关系: 从上面我们看到: 1.所有控件都是直接或间接继承View,所有的布局都是直接或间接继承ViewGroup 2.View是Android中最基本的UI组件,各种组件其实就是 ...
- WPF 创建自定义控件及自定义事件
1 创建自定义控件及自定义事件 /// <summary> /// 演示用的自定义控件 /// </summary> public class ExtButton : Butt ...
- Andriod - 创建自定义控件
控件和布局的继承结构: 可以看到,我们所用的所有控件都是直接或间接继承自 View的,所用的所有布局都是直接或间接继承自 ViewGroup 的.View 是 Android 中一种最基本的 UI 组 ...
- winform制作自定义控件
一 .概述Windows 窗体控件是可再次使用的组件,它们封装了用户界面功能,并且可以用于客户端 Windows 应用程序.“Windows 窗体”不仅提供了许多现成控件,还提供了自行开发控件的基础结 ...
- WPF创建自定义控件并运用
此项目源码:https://github.com/lizhiqiang0204/WpfCustomControlLibrary1 首先创建自定义控件库项目 项目名称命名为:WpfCustomContr ...
- Android中创建自定义控件
1.创建一个TitleLayout继承LinearLayout: //创建自定义控件 public class TitleLayout extends LinearLayout { private f ...
随机推荐
- Ionic学习资源
http://www.qianduan.net/use-ionic-develop-hybrid-app/
- CubieTruck入手第一天
基本的參考资料整理例如以下: mod=viewthread&tid=160" id="thread_subject" style="word-wrap: ...
- ansible 配置了端口在host文件但是还要走22 ip:60001 ansible_ssh_port=60001
fatal: [101.251.194.102]: UNREACHABLE! => {"changed": false, "msg": "Fai ...
- jquery.nestable.min.js可拖动标签
主容器为一个叫div的classname为dd的东西. 只要对这个主容器进行捕获加上一个方法 nestable就可以了. 可以给的属性为 serialize 直接以字符串的形式给入,意思就是按 ...
- SpringBoot使用端口运行
通过java -jar app.jar --name="Spring" --server.port=9090方式来传递参数. 参数用--xxx=xxx的形式传递. 转自http:/ ...
- Visual Studio 2008 添加MScomm控件的方法
1.下载MSCOMM.zip,解压后包含4个文件:MSCOMM32.OCX, MSCOMM.SRG, MSCOMM32.DEP, MSCOMM32.OCA 2.将Mscomm.srg, Mscomm3 ...
- Vue路由学习笔记
Vue路由大致分为6个步骤: 1.引用vue-router <script src="js/vue-router.js"></script> 2.安装插件 ...
- OAuth 授权
- webrtc 在MAC下和iOS下的编译
一:安装brew和git 1. mkdir /usr/local 2. curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo ...
- Java如何格式化秒数?
在Java中,如何格式化秒数? 此示例使用SimpleDateFormat类的SimpleDateFormat('ss')构造函数和sdf.format(date)方法格式化秒数. package c ...