转自:https://blog.csdn.net/aoshilang2249/article/details/41252781?utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-2.nonecase
封装自定义控件很简单,没什么技术含量,这里通过封装自定义的数字文本框实例简单总结一下:
【1】新建自定义控件库 -- Windows Forms Control Library
【2】添加自定义组件 -- Component Class
【3】继承TextBox,添加KeyPress事件,代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Text; using System.Windows.Forms; namespace WinForms.SelfControl { /// <summary> /// 数字文本框 -- 如果生成的Dll在工具箱中导入不了,可以直接将Dll拖入 /// </summary> public partial class TextBoxNumber : TextBox { public TextBoxNumber() { InitializeComponent(); } public TextBoxNumber(IContainer container) { container.Add(this); InitializeComponent(); this.KeyPress += TextBoxNumber_KeyPress; } /// <summary> /// 只能输入数字 /// </summary> void TextBoxNumber_KeyPress(object sender, KeyPressEventArgs e) { //如果输入的不是数字键,也不是回车键、Backspace键,则取消该输入 if ( !(Char.IsNumber(e.KeyChar)) && e.KeyChar != (char)13 && e.KeyChar != (char)8 ) { e.Handled = true; } } } }
【4】将生成后的Dll添加到工具箱
【5】测试自定义的控件 -- 验证是否只能输入数字
【6】注意问题
必须采用AnyCPU编译,如果生成的Dll导入到工具箱有问题,可以直接将文件拖入。。。