Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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# 为什么键控事件没有';"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;

与保留控件相关的所有内容都不会显示在表单标题中。。。 这只是代码示例,不是真正的项目。在实际项目中,我需要捕捉Control+C/X/V按键来执行复制/粘贴操作。

尝试以下解决方案:

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;
}