2015-03-31 22 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

相关问题