您有兩種選擇。
好的新的是它是可能的,兩者都不是很難。
- 的壞消息是,對於一個選項,您將不得不適應所有的繪製代碼:
首先讓你的控制,我用一個Panel
,有Autoscroll=true;
然後,你需要添加一個虛擬控制,我使用另一個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();
}
我增加了一個Invalidate
到Scroll
事件,以避免弄亂了繪畫的效果。
來源
2014-10-12 08:03:29
TaW
謝謝,但它不是需要滾動的控件的整個大小,它只是需要滾動條的控件的大約四分之一。 (用按鈕思考一個面板控件;你點擊按鈕,然後彈出一個可滾動菜單)儘管如此,整個控件會滾動,正確嗎? – 2014-10-13 14:28:41
@ jay_t55我將注意力集中在你的陳述上:'我的控件完全是自定義繪製的......'滾動的部分需要有它自己的容器。 – LarsTech 2014-10-13 14:29:17
你解決了你的問題嗎?如果有任何答案被使用,你可能想要接受它。 – TaW 2014-10-17 15:50:40