2016-07-11 6 views
0

У меня есть некоторый базовый код переопределения в том же классе, чтобы перехватывать события мыши. Я могу запустить OnMouseWheel, но другие события кликов не срабатывают с тем же кодом.UserControl OnMouseWheel запускает, но другие события не

protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e) 
{ 
    Debug.WriteLine("mouse down"); //does not work 
} 

protected override void OnMouseWheel(System.Windows.Forms.MouseEventArgs e) 
{ 
    Debug.WriteLine("mouse wheel"); //works 
} 

Нужна ли OnMouseWheel фокус для стрельбы? Это то, что я пытался устранить до сих пор.

+0

В Windows колеса событий отправляемых управлений с фокусом ввода, а не контроль, что мышь закончилась. –

+0

В этом случае управление с фокусом ввода - это то, что я хочу, чтобы другие события мыши работали тоже, но они не обнаруживают их. – DumbQuesionGuy314

+0

Мышь вниз должна произойти независимо от фокуса; вы уверены, что правильно привязали обработчик к экземпляру элемента управления? –

ответ

1
protected override void OnMouseClick (MouseEventArgs e) 
{ 
    Debug.WriteLine("Mouse click"); //works 
} 

private void panel1_MouseClick (object sender, MouseEventArgs e) 
{ 
    OnMouseClick(e); 
} 

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

Event

this.panel1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseClick); 

Примечание: Да, я знаю имена управления не точно такой же, и вы не используете MetroControls, но это то же самое идея.

0

Вы должны вызывает реализацию базового метода событий OnMouse поэтому базовый класс может реагировать на событие:

protected override void OnMouseDown(MouseEventArgs e) 
{ 
    Debug.WriteLine("OnMouseDown"); 
    base.OnMouseDown(e); 
} 
protected override void OnMouseUp(MouseEventArgs e) 
{ 
    Debug.WriteLine("OnMouseUp"); 
    base.OnMouseUp(e); 
} 
protected override void OnMouseWheel(MouseEventArgs e) 
{ 
    Debug.WriteLine("OnMouseWheel"); 
    base.OnMouseWheel(e); 
} 
Смежные вопросы