为Label Control创建KeyDown事件处理程序

时间:2010-02-24 14:17:55

标签: c# winforms label event-handling

我确定你们都知道Label Control没有KeyDown处理程序(为什么会这样?)......无论如何,我需要一个Label Control的KeyDown处理程序,并且感谢任何指示/建议让我开始。

我一直在搜索,但没有找到任何有关为Label Control创建自己的事件处理程序的信息。可以这样做是C#?

由于

4 个答案:

答案 0 :(得分:2)

问题开始的时间要早​​得多。标签无法获得焦点事件。所以它永远不会有焦点,因此永远不会收到KeyDown事件。

如果你确实需要这样的东西,你应该用以下设置欺骗TextBox作为起点:

textBox1.BorderStyle = BorderStyle.None;
textBox1.Cursor = Cursors.Default;
textBox1.ReadOnly = true;
textBox1.TabStop = false;
textBox1.Text = "foo";

另一种可能性是here

答案 1 :(得分:1)

标签不是为了接收来自用户的输入而设计的,因为其他人已经指出它无法获得焦点或Key *事件。如果您确实设法使其正常工作,那么对用户来说就不会显而易见了,因为他们无法点击标签以使其专注于开始输入。

也许如果你解释更多你想要实现的目标,那么有人可能会提出另一种选择。

答案 2 :(得分:1)

我在构造函数中执行了以下操作:

SetStyle(ControlStyles.Selectable,true);

并覆盖OnMouseDown方法:

protected override void OnMouseDown(MouseEventArgs e)
{
  base.OnMouseDown(e);
  if (this.CanSelect) this.Select();
}

执行此操作后,您的控件应接收键盘事件。但是如果你想从标签中创建一个像控件一样的TextBox,那将会有很多工作......

答案 3 :(得分:0)

实际上,Label继承自Control,因此它有KeyDown个事件。只是Visual Studio没有在GUI中显示它,因为Label不是为了获得焦点,所以通常不会触发所述事件。