水平滚动条在DataGridView上不可见

Sco*_*ion 13 .net c# datagridview scrollbar winforms

我有一个DataGridView窗口形式,其中填充了30列和数千行. ScrollBars属性设置为Both,但仍然不显示水平滚动条.即使我无法用键盘上的箭头键滚动.

我通过设置ScrollBars属性来尝试它Horizontal,但这没有任何区别.

有什么建议吗?

谢谢

Sco*_*ion 38

好吧,伙计们,整理出来.

我在回答我自己的问题; 它可能在将来帮助某人.

其中一列的Frozen属性设置为True.这应该false适用于所有列.现在ScrollBar对我来说非常好.

干杯

在此输入图像描述

  • 加上; 如果要显示滚动条,则只能冻结__leftmost__列.此外,第一个__not-frozen列的至少一部分必须是可见的___. (3认同)
  • 对我来说问题是我有一个具有AutoSizeMode属性的列填充,我将其更改为DisplayedCells并且工作正常. (3认同)

Dan*_*Dan 16

我知道这已经解决了,但是我遇到了另一个可能发生这种情况的原因,所以我想把它作为一个答案添加,以防其他人遇到同样的问题.

如果您的表单有一个停靠的DataGridView来填充表单,并且表单也有一个状态栏,那么根据它们创建的顺序,状态栏可以隐藏DataGridView的滚动条.要解决此问题,请右键单击DataGridView,然后选择"Bring to Front".


小智 5

DGV 的 docking.Fill 有点小问题。
当您有多个停靠面板、工具栏等时会发生这种情况。在运行时创建列时更常见。

控件认为它比它的容器宽,并且不会产生水平滚动条。

Frozen、autosize、brint to front 和提到的其他补救措施并不总是有效。最可靠的解决方法是 Dock.Left 并在运行时设置 DGV 的宽度。这样 DGV 就不会对它的宽度感到困惑。


小智 5

当我遇到这个烦人的问题时,是由于AutoSizeColumnsModeDGV 的属性设置为Fill

我通过将该属性更改为来修复它AllCells,但是其他任何值都可以使用。即使DGV停靠并且我有多个停靠面板,并且第一列为“冻结”,它也可以工作。


小智 5

我有类似的问题。我所做的是,检查您的每个 Datagrid 列并将Frozen设置为“ false ”。希望有帮助。