如何按3个键在同一时间使用KeyPress

本文关键字:KeyPress 同一时间 何按 3个 | 更新日期: 2023-09-27 18:11:19

是否有可能在KeyPress上同时获得3个密钥?我想 Ctrl + H + T

我试了ff:

if (e.KeyCode == Keys.H && e.Modifiers == Keys.Control)
{
    if (e.KeyCode == Keys.T && e.Modifiers == Keys.Control)
    {
        Console.WriteLine("^");
    }
}

但似乎不工作。我猜e.c keycode一次只返回一个键?所以我还在想该怎么做……或者将前一个键存储到变量中?提前感谢

如何按3个键在同一时间使用KeyPress

这应该工作(我测试了它,它似乎做你需要的)。

如果你按Ctrl+H,它设置一个布尔变量。然后,如果您随后立即按Ctrl+T,它将检测到两个键都被连续按下。如果你按的不是Ctrl+T,它会将标志设置回False。

private bool isCtrlHPressed;
private void txt_callerName_KeyDown(object sender, KeyEventArgs e)
{
    if (isCtrlHPressed && e.KeyCode == Keys.T && e.Modifiers == Keys.Control)
        Console.WriteLine("^");
    isCtrlHPressed = (e.KeyCode == Keys.H && e.Modifiers == Keys.Control);
}

try this

Keys key1 = Keys.None;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (key1 == Keys.H && e.Modifiers == Keys.Control && e.KeyCode != Keys.ControlKey)
    {
        MessageBox.Show("Key Pressed");
        key1 = Keys.None;
    }
    else if (e.Control && key1 == Keys.None && e.KeyCode != Keys.ControlKey)
        key1 = e.KeyCode;
    else if (e.Control)
        key1 = Keys.None;
}

使用下面的代码:

 if (e.KeyCode == Keys.X && e.Control && e.Shift) {
        // CTRL+SHIFT+X was pressed!
    }

尝试使用

if (e.Control && e.KeyCode == Keys.H && e.KeyCode == Keys.T)
{
    Console.WriteLine("^");
}

也试试这个

if (e.Modifiers == Keys.Control && e.KeyCode == Keys.H && e.KeyCode == Keys.T) 
{
    Console.WriteLine("^");
}