C# 窗体。获取所有键盘数据

C# WinForms. Get all key board data

这应该比它为此苦苦挣扎了一段时间要简单得多。我想在我的 Windows 表单上捕获击键。我必须能够检测所有的 ascii 字符以及是否按下了 shift、alt 或 control 键。我尝试了通常的按键事件、按键事件,但其中 none 为您提供了所有字符。例如,keydown 事件非常适合获取功能键、移动的字符,但它不能获取 + 或 - 之类的字符,或者可以吗? 所以我尝试了以下方法:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Control | Keys.A))
    {
        MessageBox.Show("You pressed Ctrl+A!");

        return true;
    }

    return false;
}

太棒了。这让我可以得到 "Keys" 提供的参数列表中的任何键。但这不包括 # + - 等字符。使用调试器时,大多数键都会显示,但 +、[ 等不会显示,它显示多个键被按下,但它们没有任何意义。那么解决方案是什么? 谢谢

这个呢?如果您同时按下两个键,您的事件 KeyData 应该会显示您按下的两个键。在 Windows 表单和 select KeyDown 中使用属性事件。

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    MessageBox.Show("Keys Pressed: " + e.KeyData.Tostring());
}