C# 自动滚动面板至底部

C# 自动滚动面板至底部,c#,.net,winforms,C#,.net,Winforms,我在winforms中有一个面板,我在其中加载了一些用户控件 每次添加新的usercontrol时,我都希望自动滚动到面板底部(面板填充时)。我怎样才能做到 您可以使用并传递上次添加的控件 另一种解决办法是: panel.VerticalScroll.Value = panel.VerticalScroll.Maximum 您可以通过设置面板的VerticalScroll来实现这一点,但我认为最好使用ScrollControlInView private void panel1_Control

我在winforms中有一个面板,我在其中加载了一些用户控件

每次添加新的usercontrol时,我都希望自动滚动到面板底部(面板填充时)。我怎样才能做到

您可以使用并传递上次添加的控件

另一种解决办法是:

panel.VerticalScroll.Value = panel.VerticalScroll.Maximum

您可以通过设置面板的
VerticalScroll
来实现这一点,但我认为最好使用
ScrollControlInView

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

祝你好运

我发现,每当用户向上或向下滚动面板时,以垂直增量持续向面板添加控件都会受到负面影响。我使用了上面Horam的提示,发现以下方法效果良好:

panel1.VerticalScroll.Value = 0;

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

panel1.ScrollControlIntoView(tb);

因此,首先,我滚动到顶部以使用文本框的绝对垂直位置,然后放置文本框,最后,我确保新创建的文本框进入视图

任何尝试此解决方案的人如果遇到滚动条不更新的问题,您需要在设置值后调用PerformLayout()。此处确认的问题和解决方案:请注意,如果动态添加usercontrolls,则还必须手动更新panel.VerticalScroll.Maximum的值。这似乎有效。。。不过,我发现有一件事很奇怪,那就是当面板中的其他控件相应地向上移动时,作为滚动面板子级的TableLayoutPanel不会向上移动。在滚动之后,您必须通过编程方式手动移动它们。古怪的