本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。
文章是哥(mephisto)写的,SourceLink
阅读目录
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。
文章是哥(mephisto)写的,SourceLink
介绍
这个TextBoxEx控件是cs下的,为了广大的框架都能用,就基于Framework2.0,主要有原来的textbox的功能,然后追加了EditValueChanging,数字类型输入,最大值,最小值。大家可以看完后追加下功能,比如正则输入。
起因
也是5年前的事情了,当时在做cs,一般cs都会用第三方控件,比如Dev等,dev中就有很多人性化的控件,比如我们用的比较多textbox,他就有EditValueChanging事件,当时我就想,不可能所以的小项目还要用到dev,那又想自己用到这么方便的控件怎么办,于是我就开始自己做了这个控件,抛砖引玉,只是丰富了一点,但确实对我那个年代的技术提高起了些许作用。
代码
我们先看下项目结构,因为就一个扩展控件,所以整体上看,组织结构很简单。如图:
在ControlsEx这个工程中,主要一个自定义的事件所需参数ChangingEventArgs和一个扩展控件TextBoxEx。
一:ChangingEventArgs:
主要定义EditValueChanging所需的数据结构。
View Code1 /// <summary> 2 /// 正在改变EventArgs 3 /// </summary> 4 public class ChangingEventArgs : CancelEventArgs 5 { 6 private object newValue; 7 private object oldValue; 8 9 /// <summary> 10 /// 正在改变EventArgs 11 /// </summary> 12 /// <param name="oldValue">原值</param> 13 /// <param name="newValue">新值</param> 14 public ChangingEventArgs(object oldValue, object newValue) 15 : this(oldValue, newValue, false) 16 { 17 } 18 19 /// <summary> 20 /// 正在改变EventArgs 21 /// </summary> 22 /// <param name="oldValue">原值</param> 23 /// <param name="newValue">新值</param> 24 /// <param name="cancel">是否取消</param> 25 public ChangingEventArgs(object oldValue, object newValue, bool cancel) 26 : base(cancel) 27 { 28 this.oldValue = oldValue; 29 this.newValue = newValue; 30 } 31 32 /// <summary> 33 /// 新值 34 /// </summary> 35 public object NewValue 36 { 37 get 38 { 39 return this.newValue; 40 } 41 set 42 { 43 this.newValue = value; 44 } 45 } 46 47 /// <summary> 48 /// 原值 49 /// </summary> 50 public object OldValue 51 { 52 get 53 { 54 return this.oldValue; 55 } 56 } 57 }