2016-07-11 2 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

휠 이벤트가 입력 포커스가있는 컨트롤에 전송하지 제어 그 마우스가 끝났다. –

+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); 
} 

실제 디자인 창에서 이벤트를 Control에 연결했는지 확인하십시오. 당신은

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); 
} 
관련 문제