阻止FlowLayoutPanel滚动到更新的Control

时间:2011-06-22 16:10:45

标签: c#

我有一个应用程序,它使用FlowLayoutPanel,里面有很多自定义UserControls。 Custom UserControls包含一个Label。

问题: 更新Label后,FlowLayoutPanel会自动将其滚动到视图中(类似于FlowLayoutPanel.ScrollControlIntoView()函数)。

这是使FlowLayoutPanel滚动的代码片段:

private void DownloadChanged(Object sender, DownloadProgressChangedEventArgs e)
{
        progressDownload.Value = e.ProgressPercentage;
        lblDownloaded.Text = e.BytesReceived.ToString() + " / " + e.TotalBytesToReceive.ToString();
}

我一直在尝试在FlowLayoutPanel中找到一个事件,我可以拦截并阻止它在孩子更新时滚动但到目前为止我还没有运气。

有可能这样做吗?如果是的话,我该怎么做呢?谢谢!

2 个答案:

答案 0 :(得分:4)

如果在单击FlowlayoutPanel中的控件时出现滚动问题, 使用继承的控件:

public class MyFlowLayoutPanel : FlowLayoutPanel
{

    protected override System.Drawing.Point ScrollToControl(Control activeControl)
    {
        //return base.ScrollToControl(activeControl);
        return this.AutoScrollPosition;
    }
}

https://social.msdn.microsoft.com/Forums/windows/en-US/cb8ac2d4-5940-4ed2-9f09-22cd4b76032b/suppressing-automatic-scrolling-within-flowlayoutpanel-with-autoscroll?forum=winforms

答案 1 :(得分:1)

将Label的AutoSize属性设置为 False 似乎可以解决问题。

在此处阅读更多内容:Similar Issue