如何使用KeyPress一次按3个键?

时间:2014-07-04 04:19:37

标签: c# winforms keypress

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.KeyCode一次只返回一个键?所以我还在考虑如何做到这一点......或者将以前的密钥存储到变量中?提前致谢

4 个答案:

答案 0 :(得分:2)

试试这个

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;
}

答案 1 :(得分:2)

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

如果按 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);
}

答案 2 :(得分:0)

使用以下代码:

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

答案 3 :(得分:0)

尝试使用此

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

OR 也尝试这个

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