带有 ctrl 键的 KeyPressEventArgs.KeyChar 的值

use*_*570 4 c# keypress winforms

KeyPressEvent我知道如何当检测CTRL键被按下,但后来我想CTRL+ [什么?]。

使用CTRL+ AKeyChar= 1、CTRL+B给出 2 等。检测CTRL+a输入的最佳方法是什么?

这是我的代码:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (ModifierKeys.HasFlag(Keys.Control))
    {
        Console.Write("(Ctrl) ");
    }
    Console.WriteLine(Convert.ToString(Convert.ToInt32(e.KeyChar)));
}
Run Code Online (Sandbox Code Playgroud)

输入a, b, CTRL+ a, CTRL+b给出:

97
98
(Ctrl) 1
(Ctrl) 2
Run Code Online (Sandbox Code Playgroud)

Ton*_*ony 5

我的建议是使用KeyDown事件而不是 KeyPress,因为 KeyPress 可以处理处理过的输入。KeyDown 处理“原始”数据(不完全,但足以满足您的目的)。KeyDown 事件处理程序有一个参数来保存您需要的数据:KeyEventArgs