C# Winforms - 控件的滚动条何时初始化?
Posted
技术标签:
【中文标题】C# Winforms - 控件的滚动条何时初始化?【英文标题】:C# Winforms - When are scrollbars for a Control initialized? 【发布时间】: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 的滚动条何时初始化?
【问题讨论】:
【参考方案1】:所以滚动条是什么时候 FlowLayoutPanel 初始化了吗?
这听起来像是一个 smartalec 的回答:“当控件被绘制或放置在表单上时”这就是你调整表单大小时它们同步的原因。(它们是又被画了)
解决办法是自己手动添加滚动条。
【讨论】:
最初设置控件的 visible = false ,然后将 formLoad 设置为 true 即可解决问题。感谢您的提示。 @Aseem - 我很高兴能帮助我几年前在课堂上实际上被分配做这样的事情。它涉及在有足够的内容滚动时解锁滚动条。以上是关于C# Winforms - 控件的滚动条何时初始化?的主要内容,如果未能解决你的问题,请参考以下文章
C# Winforms:没有 AutoScroll 的滚动条
如何在我的 winforms 应用程序中设置我的 datagrid 滚动条的位置?