2011-12-24 3 views
9

VS2010, Windows 7을 사용 중입니다.C# Windows에서 패널 스크롤하기

저는 많은 그림 상자가있는 패널이 있습니다. 그것은 가지고있다

AutoScroll = true 

내가 그것을 끌 때 스크롤 막대가 제대로 작동하거나 클릭하십시오. 그러나 휠과 화살표 키로 스크롤하고 싶습니다.

휠이 전혀 응답하지 않습니다. (포커스를 바꿀 때 발사가 중단됨에 따라 폼에 이벤트 핸들러를 추가해도 작동하지 않습니다.) 그리고 프로그래밍 방식으로 스크롤해야 할 화살표 키를 사용하십시오. 나는 다음을 시도했다 :

panel3.VerticalScroll.Value = panel3.VerticalScroll.Maximum; 

이것은 작동하지 않는다. 스크롤바는 거의 움직이지 않는다. 최대은 어떤 이유로 든 항상 100입니다. 내가 휠 문제에 노력 무엇

(작동하지 않습니다) :

// Fires as long as i don't change focus to anything 
this.MouseWheel += new MouseEventHandler(Panel1_MouseWheel); 

private void Panel1_MouseWheel(object sender, MouseEventArgs e) 
{ 
    panel3.Focus(); 
} 

감사합니다.

+0

을보십시오. 그것을 먼저 클릭하십시오. –

+0

작동하지 않습니다. 패널을 클릭하면 그림 상자가 표시되고 심지어 텍스트 상자가 표시됩니다. 휠이 작동하지 않았습니다. –

+0

TablelayoutPanel을 사용 하시겠습니까? –

답변

9

몇 가지 시도 :

Panel 처음 TabIndex 특성이 있는지 확인하십시오. 즉,

panel1.TabIndex = 0; 

분명히 양식의 다른 컨트롤을 올바르게 다시 인덱싱해야합니다. 또한

는 MouseDown 이벤트에 초점을 추가해보십시오 :

void panel1_MouseDown(object sender, MouseEventArgs e) { 
    if (!panel1.Focused) 
    panel1.Focus(); 
} 

당신도 MouseEnter을 할 수 있지만, 패널 위에 마우스를 이동하면 멀리 초점을 훔치는 것이기 때문에 그 이상한 사용자 인터페이스 수 있습니다 현재 활성 제어.

MouseWheel 이벤트를 구독 할 필요는 없습니다. 스크롤 바를 자동으로 움직여야합니다.

3

AutoScrollPosition 속성을 할당하여 패널을 스크롤합니다. 음수 값을 사용한다는 점에 유의하십시오.

마우스 휠이 작동하지 않는 이유는 패널이나 그림 상자가 포커스 가능 컨트롤이 아니기 때문입니다. 초점을 맞추기 위해 패널 컨트롤을 약간 재 작업해야합니다. 코드는 this answer에 있습니다.

0

당신은 그것을 마우스 휠 스크롤하기 전에 컨트롤에 포커스를 설정해야

private void panel1_MouseEnter(object sender, EventArgs e)  
{  
    panel1.Focus();  
}