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"罗?如果我猜的是真,那么"不为退格符"就不显示更矛盾了吧?
应该是退格符就不显示才对啊 展开
而不是 : 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"罗?如果我猜的是真,那么"不为退格符"就不显示更矛盾了吧?
应该是退格符就不显示才对啊 展开
3个回答
展开全部
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)
当然这需要联系程序本身的上下文来进行相应处理。
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)
当然这需要联系程序本身的上下文来进行相应处理。
展开全部
if ((e.KeyChar<48 || e.KeyChar >57)
表示的是非0-9的字符,你如果输入0-9,是不会执行的。我测试过了。
表示的是非0-9的字符,你如果输入0-9,是不会执行的。我测试过了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
e.Handled=true 代表事件响应结束,也就是不响应了。
这句话的意思是,只有输入数字键和退格键时,才会有作用。、
这句话的意思是,只有输入数字键和退格键时,才会有作用。、
追问
但它是e.KeyChar != 8 啊
追答
!=8的意思是啥?就是当按下的不为数字键,并且不是退格键,e.Handled=true 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询