如何从键盘上读取字符?

时间:2010-03-24 01:14:38

标签: c# .net wpf windows winforms

我试图将从键盘读取的字符变成某个变量以进行进一步操作。如果用户输入了我希望识别的以下列表。

键盘输入列表:

  • 字母
  • [
  • ]
  • ~
  • ^

部分代码:

 void HookManager_KeyUp(object sender, KeyEventArgs e)
 {
       string test = e.KeyCode.ToString();

此处数字,字母和方括号有效,但需要移位键的^读取不正确。例如。它读取^在键6上作为字符串值6而不是^应该是。以下是其他读物

  • [= OemOpenBracket,
  • ] = Oem6,
  • 〜= OemTilde,
  • ^ = D6。

所以D6没有意义任何帮助都会受到赞赏。

谢谢

AA

3 个答案:

答案 0 :(得分:3)

除了检查KeyCode属性之外,您还需要检查e.Shift是否为真。

答案 1 :(得分:1)

这样做会更容易:

private readonly string VALID_KEYS = "[]~^ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

private void txtBox_KeyPress(object sender, KeyPressEventArgs e) {
    if (VALID_KEYS.IndexOf(char.ToUpper(e.KeyChar)) != -1 || e.KeyChar == (char)8)
         e.Handled = false;
    else
         e.Handled = true;
}

答案 2 :(得分:0)

这可能会有所帮助...

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        const int WM_KEYDOWN = 0x100;
        const int WM_SYSKEYDOWN = 0x104;

        if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
        {
            switch (keyData)
            {
                case Keys.Shift | Keys.D6:
                    //Your code
                    break;
            }
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }

谢谢, 拉姆