Вот хороший учебник, чтобы сделать фокусируемый элемент управления. Я просто следовал за этим, чтобы убедиться, что он работает. Кроме того, добавлено событие нажатия клавиши для элемента управления, которое работает при условии, что элемент управления имеет фокус.
http://en.csharp -online.net / Architecture_and_Design_of_Windows_Forms_Custom_Controls% E2% 80% 94Creating_a_Focusable_Control
По сути, все, что я делал, это делал экземпляр моего пользовательского элемента управления, который наследуется от Control. Затем добавлены события KeyPress, Click и Paint. Нажатие клавиши было просто сообщением:
void CustomControl1_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show(string.Format("You pressed {0}", e.KeyChar));
}
Событие клика просто имеет:
this.Focus();
this.Invalidate();
Событие рисования, которое я сделал так, чтобы было видно:
protected override void OnPaint(PaintEventArgs pe)
{
if (ContainsFocus)
pe.Graphics.FillRectangle(Brushes.Azure, this.ClientRectangle);
else
pe.Graphics.FillRectangle(Brushes.Red, this.ClientRectangle);
}
Затем в основной форме после создания экземпляра mycustomcontrol и добавления обработчиков событий:
mycustomcontrol.Location = new Point(0, 0);
mycustomcontrol.Size = new Size(200, 200);
this.Controls.Add(mycustomcontrol);
Пример гораздо аккуратнее, чем мой пятиминутный код, просто хотел быть уверен, что можно решить вашу проблему таким образом.
Надеюсь, это было полезно.