c#的keypress事件有个问题

为什么0~9间的字符表示为:if((e.KeyChar<48||e.KeyChar>57)而不是:if((e.KeyChar>48&&e.KeyChar<57)的呢?//... 为什么0~9间的字符表示为 : if ((e.KeyChar<48 || e.KeyChar >57)
而不是 : if ((e.KeyChar>48 && e.KeyChar <57) 的呢? ///这只能打'9',为什么?
我是c语言过来的,这个真有点不解~
还是给出比较完整点的:
private void mykey(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar <48 || e.KeyChar >57) && e.KeyChar != 8)
e.Handled = true;
}

我理解是 : 如果是0~9以外的,而且又不是退格键的就不显示(还是显示?)
e.Handled = true; 到底是显示还是不显示呢? Handled都给我假像是手动deleted的意思...而加上true就"真的手动deleted"罗?如果我猜的是真,那么"不为退格符"就不显示更矛盾了吧?
应该是退格符就不显示才对啊
展开
 我来答
syht2000
高粉答主

2012-04-25 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
e.Handled是指示事件是否已经处理完,如果为ture就表示已经处理完不再进行处理了。或者简单来说
if ((e.KeyChar <48 || e.KeyChar >57) && e.KeyChar != 8)
e.Handled = true;

就表示这个keypress仅接受数字键以及退格键,或者说仅对这些键做出响应,其它的按键无效。

if ((e.KeyChar<48 || e.KeyChar >57) 表示的不是0-9间的字符,而是刚好相反,表示的是ascii码小于48或者大于57的非数字字符。如果你要对程序做相应更动,应该是
if (e.KeyChar>=48 && e.KeyChar <=57)
当然这需要联系程序本身的上下文来进行相应处理。
styshoo1986
2012-04-25 · TA获得超过893个赞
知道小有建树答主
回答量:832
采纳率:100%
帮助的人:264万
展开全部
if ((e.KeyChar<48 || e.KeyChar >57)
表示的是非0-9的字符,你如果输入0-9,是不会执行的。我测试过了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友253bf785
2012-04-25
知道答主
回答量:8
采纳率:0%
帮助的人:5.7万
展开全部
e.Handled=true 代表事件响应结束,也就是不响应了。
这句话的意思是,只有输入数字键和退格键时,才会有作用。、
追问
但它是e.KeyChar != 8 啊
追答
!=8的意思是啥?就是当按下的不为数字键,并且不是退格键,e.Handled=true  。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式