【问题标题】:C# Winforms - When are scrollbars for a Control initialized?C# Winforms - 控件的滚动条何时初始化?
【发布时间】:2011-07-30 21:08:52
【问题描述】:

情况如下:

我正在尝试从 devexpress 控件 VerticalScroll 控制 flowLayoutControl 的滚动条。

现在 - 带有 autoscroll = true 的 flowLayoutControl。我添加了一个新的垂直滚动控件并将其停靠在右侧。所以现在 Devexpress Vertical Scroll 控件就在 FlowLayout 滚动条的顶部。

运行以下代码时,FlowLayoutPanel 垂直滚动也不会隐藏:

    spotWinFlowLayout1.VerticalScroll.Visible = false

我已经设置了以下事件处理程序:

    private void spotWinFlowLayout1_Resize(object sender, EventArgs e)
    {
        SetupVerticalScrollBar();
    }        

    private void SetupVerticalScrollBar()
    {
        vScrollBar1.Minimum = spotWinFlowLayout1.VerticalScroll.Minimum;
        vScrollBar1.Maximum = spotWinFlowLayout1.VerticalScroll.Maximum;
        vScrollBar1.LargeChange = spotWinFlowLayout1.VerticalScroll.LargeChange;
        vScrollBar1.SmallChange = spotWinFlowLayout1.VerticalScroll.SmallChange;            
    }

    private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
    {
        spotWinFlowLayout1.VerticalScroll.Value = e.NewValue;
    }

一切正常,除了在表单加载时 flowLayoutControl 上已经有一个滚动条, spotWinFlowLayout1.VerticalScroll.XXX 属性尚未设置。所以两个滚动条都不同步。但只要我调整表单大小,两者都会同步。

那么 FlowLayoutPanel 的滚动条何时初始化?

【问题讨论】:

    标签: c# winforms scrollbar


    【解决方案1】:

    所以滚动条是什么时候 FlowLayoutPanel 初始化了吗?

    这听起来像是一个 smartalec 的回答:“当控件被绘制或放置在表单上时”这就是你调整表单大小时它们同步的原因。(它们是又被画了)

    解决办法是自己手动添加滚动条。

    【讨论】:

    • 最初设置控件的 visible = false ,然后将 formLoad 设置为 true 即可解决问题。感谢您的提示。
    • @Aseem - 我很高兴能帮助我几年前在课堂上实际上被分配做这样的事情。它涉及在有足够的内容滚动时解锁滚动条。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2015-12-01
    • 2012-11-03
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多