我的问题是如何在win表单应用程序中检测两个热键 CTRL + C , CTRL , K 喜欢视觉工作室评论命令
我需要模拟VS热键用于评论一行代码
答案 0 :(得分:1)
简单方法是......有一个名为ProcessCmdKey的Windows API函数,通过覆盖此函数,我们可以实现我们想要的目标
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (keyData == (Keys.Control | Keys.C)) {
MessageBox.Show("You have pressed the shortcut Ctrl+C");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
可以找到Microsoft文档here
答案 1 :(得分:0)
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.C)
{
}
}
答案 2 :(得分:0)
如果你想处理 Ctrl + C 然后 Ctrl + K 你需要维持一个州变量
将表单KeyPreview
属性设置为true
并处理表单KeyDown
事件。
试试这个:
this.KeyPreview=true;
private bool isFirstKeyPressed= false;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.C)
{
isFirstKeyPressed = true;
}
if (isFirstKeyPressed)
{
if (e.Control && e.KeyCode == Keys.K)
{
MessageBox.Show("Ctrl+C and Ctrl+K pressed Sequentially");
/*write your code here*/
isFirstKeyPressed= false;
}
}
}
答案 3 :(得分:0)
private bool _isFirstKeyPressedW = false;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control & e.KeyCode == Keys.W)
{
_isFirstKeyPressedW = true;
}
if (_isFirstKeyPressedW)
{
if (e.Control & e.KeyCode == Keys.S)
{
//write your code
}
else
{
_isFirstKeyPressedW = e.KeyCode == Keys.W;
}
}
}