C# 为Label控件创建KeyDown事件处理程序

C# 为Label控件创建KeyDown事件处理程序,c#,winforms,label,event-handling,C#,Winforms,Label,Event Handling,我相信大家都知道,Label控件没有键控处理程序(为什么会这样?)。。。无论如何,我需要一个用于Label控件的KeyDown处理程序,如果有任何提示/建议,我将不胜感激 我已经搜索过了,但没有找到任何关于为Label控件创建自己的事件处理程序的信息。这能做到吗 谢谢实际上,标签继承自控件,因此它有一个事件。只是Visual Studio没有在GUI中显示它,因为标签不打算接收焦点,所以说事件通常不会触发。问题开始得更早。标签无法获取焦点事件。因此,它从未有过焦点,因此从未接收到键控事件 如果你

我相信大家都知道,Label控件没有键控处理程序(为什么会这样?)。。。无论如何,我需要一个用于Label控件的KeyDown处理程序,如果有任何提示/建议,我将不胜感激

我已经搜索过了,但没有找到任何关于为Label控件创建自己的事件处理程序的信息。这能做到吗


谢谢

实际上,
标签
继承自
控件
,因此它有一个事件。只是Visual Studio没有在GUI中显示它,因为
标签不打算接收焦点,所以说事件通常不会触发。

问题开始得更早。标签无法获取焦点事件。因此,它从未有过焦点,因此从未接收到
键控
事件

如果你真的需要这样的东西,你应该伪造一个
文本框
,以以下设置为起点:

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

描述了另一种可能性。

标签不是为了接收用户的输入而设计的,因此其他人指出它无法获得焦点或按键*事件。如果你真的做到了这一点,对用户来说就不那么明显了,因为他们无法点击标签来让它集中精力开始打字


也许如果你解释更多你想要实现的目标,有人可能会建议一个替代方案。

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

设置样式(ControlStyles.Selective,true)

并重写OnMouseDown方法:

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

完成此操作后,控件应接收键盘事件。但是,如果你想用标签创建一个类似文本框的控件,这将是一项艰巨的工作……

j-t-s这项工作的最终目标是什么?由于没有用户的输入,我能想到的唯一一件事就是尝试将按键与某种鼠标单击或鼠标悬停相结合。您能提供更多详细信息吗?最终目标是捕获Label控件上的KeyDown事件,以便当标签具有焦点且用户正在键入时,Label控件将自动更新。我无法为此伪造文本框控件。如何键入标签?为什么不使用文本框呢?正如Lily所说,这是不可能的,因为标签无法获得焦点来接收用户的按键。你需要使用文本框。这是真的,谢谢你提醒我!我自己提出了一个解决方案,并将在完成测试后发布该解决方案。