今儿个,咱来聊聊WinForm里头那TextBox控件的事儿。话说这玩意儿,有时候咱就想让它老老实实地只输入数字,别的啥也别想往里塞。我就碰上这么一茬,琢磨半天,总算给弄明白,赶紧来跟大家伙儿分享分享。
实践出真知
我也是两眼一抹黑,不知道咋下手。上网一搜,五花八门啥都有。有的说要用啥“正则表达式”,有的说要加啥“键盘事件”,看得我头都大。不过咱是谁,那可是有股子不服输的劲儿!我就不信这小小的TextBox还能难倒我?
我先试试那个叫“正则表达式”的法子。听说这玩意儿挺厉害,能把不符合要求的输入都给挡在外头。我就照着网上的教程,给TextBox加个RegularExpressionValidator控件,还在ValidationExpression里头填一串神秘代码:^[0-9][1-9][0-9]$
。这串代码我是真看不懂,不过照猫画虎嘛先试试再说。
结果?还真有点儿意思!这TextBox还真就只认数字,别的啥也输不进去。不过我这心里头还是有点儿不踏实。这代码啥意思?万一哪天出点啥问题,我可咋整?
于是我又开始琢磨别的法子。这回,我盯上那个叫“键盘事件”的玩意儿。听说这东西能在用户敲键盘的时候做点手脚,把不听话的字符给拦下来。我试着给TextBox加几个事件:onkeyup、onkeypress、onkeydown,然后在里头写一堆代码,大概就是判断输入的字符是不是数字,不是数字就给它“咔嚓”掉。
这法子看着挺热闹,可实际用起来却有点儿麻烦。我发现,这几个事件有时候会“打架”,一会儿这个拦一下,一会儿那个拦一下,搞得我晕头转向。而且这代码写起来也挺啰嗦,一不小心就容易出错。
我还是回到“正则表达式”的怀抱。虽然那串代码我还是看不懂,但至少它能用,而且用起来还挺稳定。不过我可没打算就这么算。我决定,一定要把这“正则表达式”给弄明白!
- 第一步,我把那串代码给拆开来,一个符号一个符号地研究。
- 第二步,我上网查资料,看看每个符号都是啥意思。
- 第三步,我动手做实验,改改代码,看看效果有啥变化。
经过一番折腾,我还真给弄明白一些门道。原来,这“正则表达式”就像是一个筛子,能把符合要求的字符给“捞”出来,把不符合要求的字符给“筛”掉。那串神秘代码,就是告诉筛子,啥样的字符才是符合要求的。
虽然我现在还不能完全掌握“正则表达式”的奥秘,但至少我已经迈出第一步。我相信,只要我坚持下去,总有一天能把它给彻底搞定!
今儿个就先分享到这儿。等我把“正则表达式”研究透,再来跟大家伙儿好好聊聊!