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