두 가지 옵션이 있습니다.
좋은 새로운 것은 그것이 가능하고 둘 다 정말 어렵지 않다는 것입니다.
- 나쁜 새가 하나의 옵션에 대한 모든 드로잉 코드에 적응해야 할 것입니다 :
먼저 컨트롤을 만들을, 나는 당신이 필요로하는 그런 Autoscroll=true;
을 가지고하는 Panel
를 사용 하나를 추가하려면 더미 컨트롤을 추가로 다른 Panel
을 사용하면 오른쪽 및 아래쪽으로 충분히 멀리 들어가서 ScrollBars
을 표시 할 수 있습니다.
public Form1()
{
InitializeComponent();
Panel panelDummy = new Panel();
panelDummy.Size = new Size(1,1);
panelDummy.Location = new Point(yourMaxX,yourMaxY);
panel1.Controls.Add(panelDummy);
}
그리고 드로잉 코드를 수정해야합니다. 그림 결과를 엉망 피하기 위해
private void panel1_Paint(object sender, PaintEventArgs e)
{
int xx = panel1.HorizontalScroll.Value;
int yy = panel1.VerticalScroll.Value;
e.Graphics.FillRectangle(Brushes.Wheat, new Rectangle(11 - xx, 22 - yy, 22, 311));
e.Graphics.FillRectangle(Brushes.RosyBrown, new Rectangle(11 - xx, 280 - yy, 22, 3));
}
private void panel1_Scroll(object sender, ScrollEventArgs e)
{
panel1.Invalidate();
}
내가 Scroll
이벤트에 Invalidate
을 추가 한 방법은 다음과 같습니다이다.
- 다른 옵션은 간단하다 : 포함하는 패널에 전체 스크롤 사업을 위임합니다 모든 그려 컨트롤과
AutoScroll=true;
이와Panel
안에 넣어 그것을 을 보유 할만큼 충분히 컨트롤이 큰합니다. 컨트롤의 ClientSize.Height이 yourHeight보다 큰 this.AutoScrollMinSize = New Size(yourWidth, yourHeight);
경우 : 사용자 지정 컨트롤은 Panel 컨트롤에서 상속하는 경우
출처
2014-10-12 08:03:29
TaW
감사하지만 스크롤이 필요한 컨트롤의 전체 크기가 아니라 스크롤 막대가 필요한 컨트롤의 약 4 분의 1에 불과합니다. (버튼이있는 패널 컨트롤을 생각하고 버튼을 클릭하면 스크롤 가능한 메뉴가 나타납니다.) 그러나 솔루션을 사용하면 전체 컨트롤이 제대로 스크롤됩니다. –
@ jay_t55 당신의 통계에 초점을 맞추 었습니다 : '내 컨트롤은 완전히 사용자 지정되었습니다.'스크롤되는 부분에는 자체 컨테이너가 있어야합니다. – LarsTech
문제가 해결 되었습니까? 응답 중 하나가 사용 되었다면 _accept_를 원할 수 있습니다. – TaW