定制C# TextBox中只允许输入数字的解决方法

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

最近看到一些关于TextBox中限制只允许输入数字的博文,这类问题常常用 事后处理模式:录入字符结束后在控件离开(如Exit事件)或确认时进行判断。本文探讨控件录入操作的 事前处理模式:做录入操作时屏蔽非数字字符。下面,结合笔者前段时间修改完善的开源数值文框 TNumEditBox控件,介绍一个基于定制TextBox控件的解决方法。

在定制的TextBox控件中,如果只允许输入数字,需要考虑如下三种情况:
  1. 正常按键输入的字符,包括西文、中文字符等
  2. 通过键盘快捷键方式贴入的文本,即Ctrl+V操作
  3. 通过上下文关联菜单的Mouse操作贴入的文本,即”粘贴“操作
在探讨的同类文章中,多数只考虑了第1种情况,忽略得了第2、3种常见的操作。本文探讨的处理方法核心思路是重写事件OnKeyPress()和两个方法 ProcessCmdKey()与WndProc(),并把Ctrl+V、关联菜单的Paste操作统一到键盘录入操作中,从而在 OnKeyPress()屏蔽掉非数字键。

1、重写键盘事件OnKeyPress()

键盘输入的字符可以通过重写TextBox控件的OnKeyPress()事件处理,见如下代码:
protected overri
  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值