2012-11-06 2 views
1

C#에서 응용 프로그램을 실행하고 있으며 스크롤 막대에 마우스 휠 기능을 추가해야합니다.스크롤바에서 MouseWheel 작업을 수행하는 방법

내가 스크롤이 필요한 창에서 일부 컨트롤에 Focus()을 설정했습니다. 그리고 여전히, 그것은 작동하지 않습니다. 그러나 응용 프로그램을 최소화하고 다시 최대화하고 다른 클릭없이 스크롤하면 효과가 있습니다.

다른 컨트롤을 클릭하면 스크롤 막대에서 마우스 휠 기능을 사용할 수 없습니다. 또한 일부 컨트롤에 Refresh()을 넣었습니다.

무엇이 문제이고 해결책은 무엇입니까?

+0

지정할 수 있습니까? WPF 또는 WinForms입니까? – Joe

+0

[VB.Net에서 스크롤 휠의 타겟을 다시 지정하는 방법] (http://stackoverflow.com/questions/2559999/how-to-retarget-the-scroll-wheel-in-vb-net) –

+0

@ Joe WinForms를 사용합니다. – LauraV

답변

0

MouseHover 이벤트 핸들러와 초점() 스크롤 추가 : 그것은 스크롤 위치가되고 다시는이지 않는다, 그것은 스크롤 문제를 만듭니다

this.panel1.MouseHover += new System.EventHandler(panel1_MouseHover); 

private void panel1_MouseHover (object sender, EventArgs e) 
{ 
    this.vScrollBar1.Focus(); 
} 
1

을하지만, 부모 컨테이너는 자체 스크롤 오히려 있음 사용자 정의 컨트롤의 왼쪽 위 모서리.

이 문제를 방지하려면 ScrollToControl 메서드를 재정의해야합니다. System.Windows.Forms.Panel을 확장하고 여기에서 ScrollToControl 메서드를 재정의하십시오.

예제 코드 :

class CustomScrollBarPanel : System.Windows.Forms.Panel 
{ 
    protected override Point ScrollToControl(Control activeControl) 
    { 
     return this.AutoScrollPosition; 
    } 
} 

그런 다음 그것을 사용할 수 있습니다.

관련 문제