是否可以在 windows 形式的 c# 中制作两个字母的键码
Is it possible to make a two letter keycode in windows form c#
我试过这个,但没用。
if (e.Control && e.KeyCode == Keys.B &&e.KeyCode == Keys.R )
{
btn.PerformClick();
}
确保按下 B 然后按下 R 的一种方法是使用 bool
变量这表明 B 被按下。
这是一个完整的例子:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.KeyPreview = true;
this.KeyDown += new KeyEventHandler(Form1_KeyDown);
}
bool readyForRKey;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (readyForRKey && e.KeyCode == Keys.R)
{
btn.PerformClick();
}
readyForRKey = (e.KeyData == (Keys.Control | Keys.B));
}
}
如果用户按下 (Ctrl+B, R) 无论如何都会起作用他们是否在按下 R.
之前释放 Ctrl 键
另一方面,如果您想确保 B 和 R 都按下 at同时,可能对你有帮助。
请像这样尝试 ProcessCmdKey()
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if(keyData == (Keys.Control | Keys.B|Keys.R))
{
btn.PerformClick();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
我试过这个,但没用。
if (e.Control && e.KeyCode == Keys.B &&e.KeyCode == Keys.R )
{
btn.PerformClick();
}
确保按下 B 然后按下 R 的一种方法是使用 bool
变量这表明 B 被按下。
这是一个完整的例子:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.KeyPreview = true;
this.KeyDown += new KeyEventHandler(Form1_KeyDown);
}
bool readyForRKey;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (readyForRKey && e.KeyCode == Keys.R)
{
btn.PerformClick();
}
readyForRKey = (e.KeyData == (Keys.Control | Keys.B));
}
}
如果用户按下 (Ctrl+B, R) 无论如何都会起作用他们是否在按下 R.
之前释放 Ctrl 键另一方面,如果您想确保 B 和 R 都按下 at同时,
请像这样尝试 ProcessCmdKey()
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if(keyData == (Keys.Control | Keys.B|Keys.R))
{
btn.PerformClick();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}