DataGridView(表单)包含足够的行以显示垂直滚动条。但是它没有启用。移动的滑块缺失,向上和向下按钮变灰。
=> 有垂直滚动条但未启用。
我尝试了:
- 在填充DataGridView后更新控件。
- 重新调整整个面板的大小。
- Frozen属性为false。
- 在单元格中单击后,可以使用上下键滚动,但是滚动条仍未启用。
如果在运行时调整控件的大小(DataGridView在Splitpanel上),则可以使用滚动条,例如现在已启用。
DataGridView(表单)包含足够的行以显示垂直滚动条。但是它没有启用。移动的滑块缺失,向上和向下按钮变灰。
=> 有垂直滚动条但未启用。
我尝试了:
如果在运行时调整控件的大小(DataGridView在Splitpanel上),则可以使用滚动条,例如现在已启用。
请尝试以下方法:
1. 您的某一列可能已将frozen属性设置为True
。
对于所有列,该属性应为False
。
2. 将问题列的AutoSizeMode设置为AllCells
3. mygrid.DockStyle = DockStyle.Fill
如果你先设置了冻结行,那么当添加新行时,新行会采用第一行的默认样式,所有的gridview行都会有选项row.frozen = true
。这就是为什么垂直滚动条不会出现的原因。
PerformLayout
无法解决它。
事实证明,在我的情况下,问题是表单被禁用了。
我们有一个基础设施,在加载时禁用表单,异步加载一堆东西,最后启用表单。
由于某种原因,当表单被启用时,这足以使滚动条保持禁用状态(并且与您的情况一样,在运行时调整表单大小会启用滚动条)。
所以对我来说,解决方案是在启用表单之后在网格上调用PerformLayout
。同样的问题以及一些解决方法可以在这里找到:
DataGridView竖直滚动条没有正确更新(Forms bug?)
看起来这绝对是一个winforms bug,例如当DGV放置在tabcontrol的选项卡中时会出现。
将DataGridView的ScrollBar属性设置为Both。
我知道这已经很老了,但是这让我苦恼了几周。
我有两个DataGridViews在嵌套的面板上。DataGridViews是Dock->Fill,它们所在的面板是Dock->Fill,在其他嵌套面板中。
当窗体被调整大小时,垂直滚动条非常不可靠 - 经常情况下,滚动条可能是可见的但被禁用,即使我可以使用行中的向下箭头手动向下滚动网格。
最终的解决方案是使用"Tzachs"建议 - 在任何调整大小事件之后,在网格上调用"PerformLayout()"方法。 这似乎是网格中的一个错误 - 当网格在嵌套面板上自动调整大小时,无法检测到需要滚动条。
至少PerformLayout()解决了我的问题。