【问题标题】:IsLetter on DataGrid KeyDown EventDataGrid KeyDown 事件上的 IsLetter
【发布时间】:2017-01-14 19:15:38
【问题描述】:

我试图通过确定用户输入是字母还是数字来将用户输入分解为 DataGrid 上的 KeyDown 事件。这是我目前使用的方法;

private void OnDataGridKeyDown(object sender, KeyEventArgs e)
{
    if (char.IsLetter(Convert.ToChar(e.Key)))
    {
        MessageBox.Show("Letter");
    }
    if (char.IsDigit(Convert.ToChar(e.Key)))
    {
        MessageBox.Show("Number");
    }
}

但是,这表现得很奇怪。首先,IsDigit 永远不会发生并且显然无法正常工作。其次,IsLetter 有效,但仅适用于某些字母(W、Z、X、V 和 Y)。必须有更全面的方法来做到这一点,因为这显然不适合我。

【问题讨论】:

  • 你应该登录Convert.ToChar(e.Key))

标签: c# wpf datagrid char keydown


【解决方案1】:

key.toChar()char 之间存在差异,您希望它们在那里。您可以在此处阅读有关转换的信息,但这并不简单:

how to capture the '#' character on different locale keyboards in WPF/C#?

【讨论】:

  • @thomas-ayoub 添加了如何在当前上下文中使用它
  • char.IsLetter()char.IsDigit() 已经存在并且运行良好时,为什么还要重新实现它?
  • 你说得对,这个问题还有一个问题
  • char.IsLetter(Convert.ToChar(Keys.A)) => true这个应该工作,没有来自OP的更多信息,没有办法帮助
  • 这里的主要问题是他正在捕捉的事件是键盘事件,并且键确实是键而不是字符。例如,当键入 shift-A 时,您将收到两个事件而不是一个按键事件。
猜你喜欢
  • 2011-10-12
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多