C# 为什么键控事件没有';"t catch",;“控制”;唐斯? private void Form1\u KeyDown(对象发送方,KeyEventArgs e) { 开关(如钥匙代码) { 案例密钥。向上: this.Text=“up”; 打破 案例键。向下: 此参数为.Text=“down”; 打破 箱子钥匙。左: 此.Text=“”; 打破 案例密钥。删除: this.Text=“删除”; 打破 案例关键。控制: this.Text=“control”; 打破 案例关键。控制|关键。C: this.Text=“control+c”; 打破 case Keys.Control | Keys.X: this.Text=“control+x”; 打破 箱子钥匙。控制|钥匙。V: this.Text=“control+v”; 打破 违约: 打破 } }
与保留控件相关的所有内容都不会显示在表单标题中。。。 这只是代码示例,不是真正的项目。在实际项目中,我需要捕捉Control+C/X/V按键来执行复制/粘贴操作。尝试以下解决方案:C# 为什么键控事件没有';"t catch",;“控制”;唐斯? private void Form1\u KeyDown(对象发送方,KeyEventArgs e) { 开关(如钥匙代码) { 案例密钥。向上: this.Text=“up”; 打破 案例键。向下: 此参数为.Text=“down”; 打破 箱子钥匙。左: 此.Text=“”; 打破 案例密钥。删除: this.Text=“删除”; 打破 案例关键。控制: this.Text=“control”; 打破 案例关键。控制|关键。C: this.Text=“control+c”; 打破 case Keys.Control | Keys.X: this.Text=“control+x”; 打破 箱子钥匙。控制|钥匙。V: this.Text=“control+v”; 打破 违约: 打破 } },c#,.net,winforms,controls,keydown,C#,.net,Winforms,Controls,Keydown,与保留控件相关的所有内容都不会显示在表单标题中。。。 这只是代码示例,不是真正的项目。在实际项目中,我需要捕捉Control+C/X/V按键来执行复制/粘贴操作。尝试以下解决方案: private void Form1_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Up: this.Text = "up"; break;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up:
this.Text = "up";
break;
case Keys.Down:
this.Text = "down";
break;
case Keys.Left:
this.Text = "<-";
break;
case Keys.Right:
this.Text = "->";
break;
case Keys.Delete:
this.Text = "delete";
break;
case Keys.Control:
this.Text = "control";
break;
case Keys.Control | Keys.C:
this.Text = "control + c";
break;
case Keys.Control | Keys.X:
this.Text = "control + x";
break;
case Keys.Control | Keys.V:
this.Text = "control + v";
break;
default:
break;
}
}
编辑:
如果不起作用,请在代码周围添加:
case (e.Control && e.KeyCode == Keys.C)
编辑2:
还有这个:
case (Keys.Control | Keys.C):
编辑3:
打开KeyData
e.KeyData == (Keys.Control | Keys.V)
对不起,您自己测试过示例的编译能力吗?评论中的那个,这个是不可编译的<代码>无法将类型“bool”隐式转换为“System.Windows.Forms.Keys”。而
(Keys.Control | Keys.C)
的结果与我的原始代码相同。如果您使用KeyDown
事件,我的第一个解决方案可以正常编译。第二个,我认为是您使用winforms
导致了偏执缺失?这很有效,但很奇怪。它仍然没有捕获case-Keys.Control:
要捕获,我想您可以覆盖它:protectedoverride bool-ProcessCmdKey(ref-Message msg,Keys-keyData){switch(keyData){case-Keys.F4 | Keys.Control://Do something}
这里还有另一个解决方案:-D:http://stackoverflow.com/questions/1646998/up-down-left-and-right-arrow-keys-do-not-trigger-keydown-event
您只是在测试错误的密钥。如果您想查看Ctrl键本身,而不仅仅是修改器,那么您必须测试Keys.ControlKey。这没有意义。
switch (keyData) {
// Control+ C
case Keys.Control | Keys.C:
// ...
break;
case Keys.Control | Keys.V:
// ...
break;
}