Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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#当我有按钮时,按键不起作用_C#_Winforms - Fatal编程技术网

C#当我有按钮时,按键不起作用

C#当我有按钮时,按键不起作用,c#,winforms,C#,Winforms,我在互联网上看到解决方案是将KeyPreview设置为true。我试过了,但还是不起作用。为什么当我按下其中一个箭头(向下、向上、向左或向右)时,标签仍然不显示 要明确这一点:普通的字母确实有效,并使标签炫耀。问题是箭头(向下、向上、向左或向右)不起作用。 我想我知道为什么,“焦点”在按钮上,而不是表单上。 我在互联网上搜索了这个,发现我需要将KeyPreview设置为true。我这样做了,但当我按下箭头时,它仍然没有显示标签,只是当我按下字母时。 如果我拆下按钮,箭头会起作用 这是我的密码:

我在互联网上看到解决方案是将
KeyPreview
设置为
true
。我试过了,但还是不起作用。为什么当我按下其中一个箭头(向下、向上、向左或向右)时,标签仍然不显示

要明确这一点:普通的字母确实有效,并使标签炫耀。问题是箭头(向下、向上、向左或向右)不起作用。 我想我知道为什么,“焦点”在按钮上,而不是表单上。 我在互联网上搜索了这个,发现我需要将
KeyPreview
设置为
true
。我这样做了,但当我按下箭头时,它仍然没有显示标签,只是当我按下字母时。 如果我拆下按钮,箭头会起作用

这是我的密码:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            label1.Visible = false;
            this.KeyPreview = true;
            this.KeyDown += Form1_KeyDown;
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            label1.Visible = true;
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }

覆盖
ProcessCmdKey()
对我有效,即使
KeyPreview
已关闭:

public Form1()
{
    InitializeComponent();
    label1.Visible = false;
}

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    switch (keyData)
    {
        case Keys.Left:
        case Keys.Right:
        case Keys.Up:
        case Keys.Down:
            label1.Visible = true;
            break;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

尝试以下解决方案之一: