【问题标题】:C# keydown not working when I have a button当我有一个按钮时,C#keydown 不起作用
【发布时间】:2020-06-25 14:00:38
【问题描述】:

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

        }
    }

【问题讨论】:

标签: c# winforms


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多