我需要制作三个字母的快捷键组合(Ctrl + L + I) 我尝试了很多,但没有运气。 我用这种方式尝试了
private void MDIParent2HOME_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.Keycode==Keys.L && e.KeyCode == Keys.I)
{//login
Form1 chilform = new Form1();
chilform.MdiParent = this;
chilform.Show();
}
}
但这没有用。
然后我改变了我的组合键(ctrl + ALt + L)并以同样的方式尝试了
private void MDIParent2HOME_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.Alt && e.KeyCode == Keys.L)
{//login
{
Form1 chilform = new Form1();
chilform.MdiParent = this;
chilform.Show();
}
}
}
我想知道它是完美的。我无法理解任何人都知道KeyDown事件的这种行为。如果我能用(ctrl + L + I)做同样的事情,也可以帮助我。感谢
答案 0 :(得分:1)
您正在检查e.Keycode==Keys.L && e.KeyCode == Keys.I
。我认为e.Keycode只包含单个密钥L
或I
的值,但不能同时包含两个密钥,因此您的检查将始终失败。
请注意,Alt
,Shift
和Ctrl
是修饰符,其处理方式与其他键略有不同。
答案 1 :(得分:1)
嗯...我认为我的解决方案有效
private bool IfSeen;
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (IfSeen)
{
if (keyData == (Keys.Control | Keys.I))
{
MessageBox.Show("You pressed Ctrl+L+I");
}
IfSeen= false;
return true;
}
if (keyData == (Keys.Control | Keys.L))
{
IfSeen= true;
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}