我确定你们都知道Label Control没有KeyDown处理程序(为什么会这样?)......无论如何,我需要一个Label Control的KeyDown处理程序,并且感谢任何指示/建议让我开始。
我一直在搜索,但没有找到任何有关为Label Control创建自己的事件处理程序的信息。可以这样做是C#?
由于
答案 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
不是为了获得焦点,所以通常不会触发所述事件。