我面临着一个非常奇怪的问题,在谷歌搜索和搜索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中有很多控件(=>启用垂直滚动条,可见),现在我删除了一些控件,所以我不再需要滚动条了。功能一切正常,我无法滚动或点击滚动条。但有时会出现视觉错误。滚动条不会消失,我可以做一些奇怪的事情,如图:
如果我在删除控件后也调用void setFlowcontrolScrollbar,那么几乎所有时候我都不再需要删除控件和滚动条:
在这两张图片中,我将表单向右调整了一下,以便您可以看到我的控件如何与滚动条重叠。我该如何解决这个问题?有没有更好的方法来激活垂直滚动?
重要编辑:
如果我使用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”的答案)