2011-03-31 182 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); 

所以第一,我滚动到顶部,以便用我的文本框的绝对垂直位置,然后我把文本框,最后,我确保新创建的文本框进入视图。