Создание обработчика событий KeyDown для элемента управления Label - PullRequest
3 голосов
/ 24 февраля 2010

Я уверен, что вы все знаете о том факте, что элемент управления Label не имеет обработчика KeyDown (и с чего бы это?) ... В любом случае мне нужен обработчик KeyDown для элемента управления Label, цените любые указания / предложения, чтобы начать меня.

Я искал вокруг, но не нашел никакой информации о создании моих собственных обработчиков событий для элемента управления Label. Можно ли это сделать C #?

Спасибо

Ответы [ 4 ]

2 голосов
/ 24 февраля 2010

Проблема начинается гораздо раньше. Метка не может получить фокус-событие. Поэтому он никогда не имеет фокуса и поэтому никогда не получает событие KeyDown.

Если вам действительно нужно что-то подобное, вам следует подставить TextBox со следующими настройками в качестве отправной точки:

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

Другая возможность описана здесь .

1 голос
/ 16 апреля 2010

Я сделал следующее в конструкторе:

SetStyle (ControlStyles.Selectable, true);

и также переопределил метод OnMouseDown:

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

После выполнениячто ваш контроль должен получать события клавиатуры.Но если вы хотите создать элемент управления типа TextBox из метки, это будет много работы ...

1 голос
/ 24 февраля 2010

Метка не предназначена для получения ввода от пользователя, поэтому, как отмечали другие, она не может получить фокус или события Key *. Если вам все-таки удастся заставить это работать, это не будет очевидно для пользователей, поскольку они не могут щелкнуть по ярлыку, чтобы сосредоточиться на нем, чтобы начать печатать.

Возможно, если вы объясните больше, чего вы пытаетесь достичь, кто-то может предложить альтернативу.

0 голосов
/ 24 февраля 2010

На самом деле Label наследуется от Control, поэтому имеет событие KeyDown. Просто Visual Studio не показывает его в графическом интерфейсе, потому что Label не предназначены для получения фокуса, поэтому указанное событие обычно не срабатывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...