winforms 当我有一个按钮时,C# keydown不工作

vof42yt1  于 2023-01-31  发布在  C#
关注(0)|答案(1)|浏览(155)

我在网上看到的解决方案是将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)
        {

        }
    }
a14dhokn

a14dhokn1#

覆盖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);
}

相关问题