【问题标题】:What is the KeyCode for ","(comma) and "."(dot) in .NET?.NET 中“,”(逗号)和“.”(点)的 KeyCode 是什么?
【发布时间】:2012-01-18 18:49:08
【问题描述】:

在我的KeyDownEventHandler 中,我需要知道“,”和“.”的KeyCode 是什么。

我找不到他们这就是我问的原因。谢谢!

【问题讨论】:

  • 您确定要使用KeyDown 而不是KeyPress 处理程序吗?
  • KeyDown 事件处理程序处理击键,而不是它们在系统中的表示,这取决于区域设置。要处理字符,请使用 KeyPress 事件。

标签: c# .net vb.net enums keycode


【解决方案1】:

键和字符不是一回事。键盘布局在它们之间转换,这种转换并非微不足道。使用KeyDown 时,您可能做错了事。如果你想知道用户输入了哪个字符,你应该使用KeyPress,它给出了已经翻译的字符。

例如,Keys.Decimal 是数字键盘上的一个键,对应于美国布局上的 . 和德国布局上的 ,Keys.OemcommaOemPeriod 可能在字母下方。但在其他布局上可能会有所不同。

【讨论】:

  • Keys.Deciaml 用于数字键盘,第二个小数是什么??
  • 没有“第二个小数”。 comma 有一个键,句号 有一个键,但它们中的哪一个产生小数分隔符取决于语言环境。我也很确定,问这个问题意味着你已经走错了路。您应该使用字符,而不是键。
【解决方案2】:

OemcommaOemPeriod 看起来是不错的候选人。

查看 MSDN 上的Keys enumeration

【讨论】:

    【解决方案3】:

    我这样做了:

    1. 创建了一个带有单个文本框的 WinForm 项目。
    2. 添加了 keydown 事件处理程序。
    3. 在里面放一个断点
    4. 知道了:

    【讨论】:

      【解决方案4】:

      查看十进制值,这是您的关键代码。

      http://www.asciitable.com/

      【讨论】:

        【解决方案5】:

        使用Keys.OemcommaKeys.OemPeriod

        【讨论】:

          【解决方案6】:

          你试过这个“.”c

          浮动过滤器:

          Select Case e.KeyChar
              Case "0"c To "9"c
              Case "."c
                  If .Text.Contains(".") Then
                      e.Handled = True
                  End If
              Case ChrW(Keys.Delete), ChrW(Keys.Back)
              Case Else
                  e.Handled = True
          End Select
          

          【讨论】:

          • 这个有 C# 语法吗?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-03
          相关资源
          最近更新 更多