2011-03-31 224 views
9

我在我的winforms中有一個面板,在它中我加載了一些用戶控件。自動滾動面板到底部

我想在每次添加新的用戶控件時自動滾動到面板的底部(因爲我的面板已經填滿了)。我怎麼能這樣做?

回答

18

你可以通過設置小組VerticalScroll,但我認爲這將是更好地使用ScrollControlIntoView代替。

private void panel1_ControlAdded(object sender, ControlEventArgs e) 
{ 
    panel1.ScrollControlIntoView(e.Control); 
} 

祝你好運!

+1

這似乎工作......有一件事我覺得很奇怪,是當面板中的其他控件相應地向上移動時,作爲滾動面板的子對象的TableLayoutPanel不會向上移動。滾動後,您必須手動移動這些程序。奇。 – eidylon 2015-01-14 19:57:46

18

您可以使用ScrollControlIntoView並傳遞您最後添加的控件。

另一種解決方案是:

panel.VerticalScroll.Value = panel.VerticalScroll.Maximum 
+8

任何人嘗試此解決方案誰滾動條的問題沒有更新,您需要在設置值後調用PerformLayout()。問題和解決方案在這裏證實:http://stackoverflow.com/questions/5565653/scrollbar-does-not-update-on-changing-the-scroll-value – Rob 2012-03-25 22:53:41

0

我發現每當用戶向上或向下滾動面板時,以垂直增量持續向面板添加控件都會受到負面影響。我用尖嘴Homam以上,並發現了下面的工作得很好:

panel1.VerticalScroll.Value = 0; 

// Creating and adding a TextBox, tb, to the panel 

panel1.ScrollControlIntoView(tb); 

所以第一,我滾動到頂部,以便用我的文本框的絕對垂直位置,然後我把文本框,最後,我確保新創建的文本框進入視圖。