【问题标题】:How do I bind a keyboard key to a label如何将键盘键绑定到标签
【发布时间】:2016-04-25 15:35:43
【问题描述】:

我正在尝试绑定一个键盘按钮(最好是“ESC”)来停止在方法内运行的代码。但问题是,它只适用于实际的按钮,有没有办法绕过它,所以它在按下标签时也能工作?

        private void label1_Click(object sender, EventArgs e)
        {

            if (e.Control && e.KeyCode.ToString() == "ESC")
            {
                MessageBox.Show("This does now work");
            }
}

我在某处读到,可能只是 Visual Studio GUI 没有提供它,但您可以通过某种方式使用代码来实现,这是真的吗?

【问题讨论】:

  • 您是否尝试让标签成为焦点?
  • 那是错误的事件处理程序。尝试使用 keydown 事件处理程序。
  • 我认为问题是标签没有获得焦点,所以 keydown 不能去它......但如果它没有,那么焦点就在另一个元素上,所以你检查了哪个控件重点?
  • 我们有 click asp.net 标签的事件吗??
  • 我不太明白你想要归档什么。您是否希望按下“ESC”,代码的执行停止并且 Visual Studio 调试器获得控制权?

标签: c# winforms user-interface


【解决方案1】:

我不确定您要做什么。以下将在焦点位于窗体中时按下 Escape 键,无论哪个控件具有焦点。只需将其添加到表单中(当然是代码)。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Escape))
    {
        MessageBox.Show("This works");
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

【讨论】:

  • 我试图让软件停止运行代码,假设我正在运行软件并输入一些我希望能够按 ESC 并使其停止输入的内容。
  • 我提供了解决与您提供的代码相对应的问题的示例代码。您没有提供有关您的应用程序的其他信息,说明还需要做什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多