【问题标题】:How do I compare pressed Key values in keyDown event如何比较 keyDown 事件中按下的键值
【发布时间】:2015-03-31 10:03:12
【问题描述】:

我在这里尝试一些非常琐碎的事情,但不知何故无法理解它。我正在处理 wpf 中 Telerik 网格的 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

这些是 if 中的计算值

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?

如何简单地将按下的键与键值范围进行比较?

我希望我已经尽可能多地解释了,但如果您需要任何澄清,请询问..

谢谢

【问题讨论】:

  • 你是在比较同类吗? e.Key实际上是来自Keys enum,还是来自Key enumD4(和其他数字)每个都有不同的值,可以解释你看到的行为。
  • 你可以来踢我这个...谢谢一个吨的人...不知道我怎么能错过那个...可能暗二 = e.Key 出来真的让我很困惑..
  • 请随意移到ans,我会标记...
  • 为什么要投反对票,它的 vb 编译器不会引发错误,哈哈

标签: c# .net wpf vb.net keydown


【解决方案1】:

你在比较喜欢和喜欢吗?请注意(无论出于何种原因),.NET (至少)有两个不同的 Key 枚举。看起来您正在与 Windows.Forms 中的 Keys enum 进行比较,但您可能需要与 System.Windows.Input 中的 Key enum 进行比较。

每个 Enum 的成员都有不同的值,因此如果您使用了错误的值,请解释您所看到的行为。

【讨论】:

  • 有趣的是,在 C# 中,如果您尝试比较它们会出现编译器错误,但在 VB 中不会。
  • 啊...这很奇怪.. CLR 是:)
猜你喜欢
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多