2009-08-24 5 views
4

기본적으로 Panel (무작위로 내용이 들어있는) 인 User Control을 만들고 있는데, 스크롤바 대신 버튼을 사용하여이 패널을 위아래로 스크롤 할 수 있어야합니다.스크롤 막대가없는 WinForm 패널 스크롤링?

내가 이런 식으로해야하는 이유는 프로그램이 터치 스크린 모니터에 사용될 것이기 때문에 우리는보기 흉하게 작은 스크롤바보다는 큰 버튼이 필요하기 때문입니다.

저는 VerticalScrollbar 속성을 사용하고 있는데 아무 것도하지 않는 것 같습니다. 나는 AutoScroll을 false로 설정하면 AutoScrollPosition이 실제 좌표를 표시한다는 점을 알아 차렸다. 또한, 나는 panel.VerticalScrollbar.Visible = true; 생성자 바깥에있을 때만 작동하는 것처럼 보입니다. 그 이유가 있을까요?

기본적으로 WinForms의 스크롤바는 나에게 매우 혼란 스럽습니다. 누구나 버튼을 사용하여 프로그래밍 방식으로 패널을 위아래로 스크롤하는 좋은 방법을 알고 있습니까 (보이지 않는 스크롤 막대가 필요한지는 상관하지 않습니다).

감사합니다. = D

답변

5

UserControl을 일반 UserControl (예 : Panel 대신 UserControl에서 상속)으로 만들고 UserControl에 Panel을 배치합니다. 안쪽 패널에 내용/컨트롤을 놓은 다음 패널의 왼쪽 및 위쪽 속성을 변경하여 스크롤 막대없이 주위로 이동하십시오. UserControl에 버튼을 추가하여 내부 패널의 동작을 처리 할 수도 있습니다.

그러나 더 간단한 방법은 실제 와이드/하이 스크롤바를 사용하여 동일한 큰 값으로 Thumbwidth를 설정하는 것일 수 있습니다.이 속성을 사용하면 스크롤 막대를 손가락. 내 지식에 자동 스크롤이 True로 설정되어있는 패널에 나타나는 스크롤 막대를 사용하여이 작업을 수행 할 방법이 없으므로 위에서 설명한 (내부 컨트롤이 UserControl에있는) 메서드를 사용해야하고 스크롤 막대를 추가해야합니다 직접 이동하십시오.

나는 Windows의 스크롤바가 빨라서 모든 사람이 익숙한 표준 컨트롤을 사용하는 편이 낫다는 것에 동의한다.이 경우 자신 만의 롤링에 아무런 문제가 없다.

+0

안녕하세요. 대단한 답변을 보내 주셔서 감사합니다. MusiGenesis! 패널 위치를 옮기는 것이 가장 쉬운 방법 일 것이라고 생각했습니다. 그러나 패널의 크기가 내부의 내용을 기반으로하므로 패널의 크기를 파악하기 위해 더 많은 작업을해야하므로이 작업을 피하고 싶습니다. 그럼에도 불구하고 이것은 내가 취할 길과 같습니다. 다시 한 번 감사드립니다! – Alex

관련 문제