如何按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一次只返回一个键?所以我还在想该怎么做……或者将前一个键存储到变量中?提前感谢
这应该工作(我测试了它,它似乎做你需要的)。
如果你按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("^");
}