FlowLayoutPanel滚动条有时不会正常消失

时间:2016-10-27 08:37:46

标签: c# winforms visual-studio scrollbar

我面临着一个非常奇怪的问题,在谷歌搜索和搜索StackOverflow之后,我绝对不知道如何解决这个问题,因为它有时只会发生。

我的问题:

我有一个flowLayoutPanel(flp),只有一个垂直滚动条,如果我的flp中的控件不适合它的大小。我不使用水平滚动条。 代码:

private void setFlowcontrolScrollbar(flowLayoutPanel fc)
{
    int height = 0;

    foreach (FilePanel fp in fc.Controls)
    {
        height += fp.Height;
    }

    if (height > fc.Height)
    {

        fc.VerticalScroll.Visible = true;
        fc.VerticalScroll.Enabled = true;
    }
    else
    {
        fc.VerticalScroll.Visible = false;
        fc.VerticalScroll.Enabled = false;
    }

    fc.HorizontalScroll.Visible = false;
    fc.HorizontalScroll.Enabled = false;
}

在调整flp大小或添加新项目后调用此方法。我的flp中的控件仅在水平方向上调整大小。

现在这个工作正常,如果我的flp中有很多控件,我可以滚动。但是,假设我的flp中有很多控件(=>启用垂直滚动条,可见),现在我删除了一些控件,所以我不再需要滚动条了。功能一切正常,我无法滚动或点击滚动条。但有时会出现视觉错误。滚动条不会消失,我可以做一些奇怪的事情,如图:

enter image description here

如果我在删除控件后也调用void setFlowcontrolScrollbar,那么几乎所有时候我都不再需要删除控件和滚动条:

enter image description here

在这两张图片中,我将表单向右调整了一下,以便您可以看到我的控件如何与滚动条重叠。我该如何解决这个问题?有没有更好的方法来激活垂直滚动?

重要编辑:

如果我使用drag'n'drop从我的flp中移除线条(控件)并且只有在拖动时触摸/悬停在滚动条上方时才会出现错误。如果我将其拖出左侧并将其放在其他地方,则滚动条消失正确。

注意:找到一个更好的解决方案来摆脱水平滚动。

panel.HorizontalScroll.Maximum = 0;
panel.AutoScroll = false;
panel.VerticalScroll.Visible = false;
panel.AutoScroll = true;

(来源:How do I disable the horizontal scrollbar in a Panel,来自“Kbv Subrahmanyam”的答案)

0 个答案:

没有答案
相关问题