C#数值文本框(Numerical/Decimal TextBox)组件TDecEditBox(bata版)

(原创文章,转载请注明来源:http://blog.csdn.net/hulihui)

    经常做数据处理软件,在录入数值型数据时,总怀念当年Foxbase/FoxPro的数值型文本框录入控件的灵活与好用。在使用Delphi的第三方控件时,PBEditPack包中的PBNumEdit可以做到Fox文本框控件相同效果。
    
    于是到网上搜索.NET的数值型文本框组件,最后在 http://www.codeproject.com/KB/edit/numedit.aspx找到一个名为BANumEdit的开源组件,它支持CTRL+V/CTRL+C操作,源代码短小精练,构思巧妙。在该组件基础上,结合自己的实际情况,做了如下修改补充:
  1. 增加了ReadOnly 时的背景颜色
  2. 增加了小数位长度,删除了原组件数据类型选项
  3. 存在小数点时,再按小数点将定位到后面位置
  4. 小数点后输入数据时,采用覆盖(override)方式,而不是插入方式,当小数位达到设定的长度时
    组件TDecEditBox或BANumEdit均派生自文本框TextBox,技术要点如下:
  1. 重载命令键处理方法 ProcessCmdKey((ref Message msg, Keys keyData),用以支持Ctrl+V/Ctrl+C操作;
  2. 重载离开事件OnLeave,保证离开组件时格式符合要求,特别是小数位个数要求;
  3. 重载按键事件OnKeyPress,处理几个特别字符(空格、加、减、小数点+/-/.);
  4. 使用一个IsValidText,判断文本串是否符合要求;
  5. 增加一个BackColorWhenReadOnly字段,保存只读时背景颜色。

    运行结果见下图
C#数值文本框(Numerical/Decimal TextBox)组件TDecEditBox(bata版)_第1张图片

    使用Visual C# 2005实现的组件源码(bata版,含原BANumEdit)请下载: http://download.csdn.net/source/629319

    该组件的最终目标,要达到Delphi免费组件PBNumEdit的相同功能,有意本组件者,如果发现了Bug,或有好的建议,或发现了更好的开源组件,请不吝指教。

     附注:更成熟好用的数值编辑控件TNumEditBox请参考笔者博文: C#数值编辑控件TNumEditBox(C# Numerical/Decimal Edit Control)。2008年9月30日补记。


你可能感兴趣的:(c,.net,C#,Delphi,textbox)