2010-10-04 46 views
0

为什么这个配方是错误的难度keychar

 if (e.KeyChar <= (char)Keys.NumPad0 && e.KeyChar >= (char)Keys.NumPad2) 
     { 
      if (e.KeyChar <= (char)Keys.O && e.KeyChar >= (char)Keys.Oem2) 
      { 
       MessageBox.Show("Yes"); 
      } 
     } 

我想0和2

回答

2
Keys.O 

之间是数字,因为你不能从0开始枚举名称(数字零),这必须是O(字母O)

和整个逻辑似乎有缺陷,它应该像

if ((e.KeyChar >= (char)Keys.NumPad0 && e.KeyChar <= (char)Keys.NumPad2) || (e.KeyChar => (char)Keys.Oem0 && e.KeyChar <= (char)Keys.Oem2)) 

(IM不知道> =和< =和Oem0)

1

介于0和2 ...

e.KeyChar >= (char)Keys.NumPad0 && e.KeyChar <= (char)Keys.NumPad2 
+0

0123人们通常阅读这些事情的方式:)。因为它是一个更完整的答案,所以 – bastijn 2010-10-04 09:15:49

3

要检查它的等于或小于0,并在同一时间相等或大于2.这是不可能的。你必须选择比小于和,反之亦然你更大,并同时处理数字键盘和其他数字键,改成这样:

if (e.KeyChar >= (char)48 && e.KeyChar <= (char)50) 
    ... 
+0

将你的优势提高了。 – bastijn 2010-10-04 09:16:34

2

我不能说这个代码是否存在于的KeyDown或KeyPress事件处理程序。如果你想过滤输入键,那么你应该使用KeyPress。然后代码是:

 if (e.KeyChar >= '0' && e.KeyChar <= '2') { 
      MessageBox.Show("yes"); 
     }