У меня есть пользовательский элемент управления, который имеет следующее перекрытое событие:Поднятие события на пользовательском элемент управления от родительского
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.Left)
DoSomething();
}
Когда я помещаю пользовательский элемент управления на моей основной форме, это событие не увольняет.
Как я могу получить доступ к этому событию из родительской формы?
protected override void OnKeyDown(KeyEventArgs e)
{
e.Handled = true;
if (e.KeyCode == Keys.Left)
Move(pt.X,pt.Y);//Move is a function within the usercontrol
else if (e.KeyCode == Keys.Right)
Move(pt.X,pt.Y);
//other conditions
e.Handled = false;
}
мне нужен родитель уведомления об этом событии
Вы уверены, что пользовательский элемент управления имеет фокус клавиатуры, когда вы нажимаете клавишу? Я не понимаю, почему его нельзя уволить. Я также не понимаю, пытаетесь ли вы превратить событие в основную форму или нет. – Rotem
Rotem, пользовательский элемент управления был формой окна, преобразованный в usercontrol.It работал отлично. Теперь я превратился в usercontrol и хочу запускать действия из формы родительского окна. У меня такая же проблема с другим проектом, когда я построил калькулятор и превратился в userControl. Теперь я помещаю его в форму окна, и кнопки не отвечают – Avrum
Похоже, что решение должно быть общедоступным методом в usercontrol, который вызывает метод onKeyDown, хотя вы упомянули, что пытались это сделать, и это не сработало. В какой части это не сработало? – Rotem