2015-03-31 66 views
0

我想在這裏很重要的東西,但不知何故無法讓我的頭繞它..我正在處理wpf telerik網格的KeyDown事件。如何比較keyDown事件中按下的鍵值

還有就是要檢查,如果按下鍵是一個數或小數,所以我做..

If ((e.Key >= Keys.D0 AndAlso e.Key <= Keys.D9) OrElse 
    (e.Key >= Keys.NumPad0 AndAlso e.Key <= Keys.NumPad9) OrElse 
    e.Key = Keys.Decimal) Then 

     e.Handled = False 
Else 
     e.Handled = True 
End If 

但上面如果從來沒有滿足..例如,如果我按D4

這些是如果計算出的值

Dim one = e.Key >= Keys.D0 -> False 
Dim two = e.Key <= Keys.D9 -> True 
Dim three = e.Key >= Keys.NumPad0 -> False 
Dim four = e.Key <= Keys.NumPad9 -> True 
Dim five = e.Key = Keys.Decimal -> False 

爲什麼D4小於D9成立但不大於D0?

我怎樣才能簡單地比較按鍵與鍵值範圍?

我希望有儘可能多的解釋我可以,但如果你需要任何澄清請諮詢..

感謝

+0

你比較像喜歡嗎?實際上來自''Keys'枚舉](https://msdn.microsoft.com/en-us/library/system.windows.forms.keys%28v=vs.110%29.aspx)的'e.Key' ,還是來自['Key' enum](https://msdn.microsoft.com/en-us/library/system.windows.input.key%28v=vs.110%29.aspx)? 'D4'(和其他數字)在每個值中都有不同的值,並會解釋您所看到的行爲。 – 2015-03-31 10:11:37

+0

你可以很好的來爲我踢這個......感謝一噸人......不知道我怎麼會錯過這個....大概昏暗的兩個= e.Key <= Keys.D9 ->出來真正困惑我.. – Muds 2015-03-31 10:16:05

+0

請放心把它移動到ans,我會標記它... – Muds 2015-03-31 10:16:24

回答

2

您比較喜歡用什麼樣的?請注意(無論出於何種原因),.NET有(至少)兩個不同的鍵枚舉。看起來您正在與Windows.Forms中的Keys enum進行比較,但您可能需要將其與System.Windows.Input中的Key enum進行比較。

每個Enum的成員都有不同的值,所以如果你使用了錯誤的值,它會解釋你看到的行爲。

+0

這的確是這樣,感謝啓示! – Muds 2015-03-31 10:19:55

+0

有趣的是,在C#中,如果您嘗試比較它們,但在VB中不會出現編譯器錯誤。 – 2015-03-31 10:24:53

+0

啊......這很奇怪.. CLR它是:) – Muds 2015-03-31 10:32:26

相關問題