2010-10-04 63 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"); 
     }