Если я правильно понимаю, вы пытаетесь вызвать метод OnKeyDown
пользовательского элемента управления из родительской формы.
Это основной класс формы:
public class Form1 : Form
{
private UserControl1 myControl;
public Form1()
{
myControl = new UserControl1();
Controls.Add(myControl);
}
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
myControl.InvokeOnKeyDown(e);
}
}
А это пользовательский элемент управления:
public class UserControl1 : UserControl
{
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
MessageBox.Show("Key Down Fired!");
}
public void InvokeOnKeyDown(KeyEventArgs e)
{
OnKeyDown(e);
}
}
Редактирование относительно клавиш со стрелками: клавиши со стрелками обычно не считаются клавишами ввода и поэтому не передаются методам клавиш. Чтобы изменить это, вы должны переопределить метод IsInputKey
следующим образом:
protected override bool IsInputKey(Keys e)
{
if (e == Keys.Up || e == Keys.Down ||
e == Keys.Left || e == Keys.Right) return true;
return base.IsInputKey(e);
}