DataGridView中水平滚动条不可见

24

我在Windows表单上有一个DataGridView,其中有30列和数千行。

ScrollBars属性被设置为Both,但水平滚动条仍然不可见。即使我无法使用键盘的箭头键滚动。

我尝试将ScrollBars属性设置为Horizontal,但没有任何改变。

请问有什么建议吗?

谢谢


1
感谢您的回复@V4Vendetta。问题已经解决了;其中一个列设置了“Frozen”属性为“True”。所有列都应该是“false”。现在滚动条对我来说完全正常。干杯! - Scorpion
21个回答

47

好了,伙计们,问题解决了。

我回答自己的问题; 也许会有帮助。

其中一列设置了Frozen属性为True,所有列都应该将其设置为false。现在滚动条对我来说完全正常工作。

干杯

输入图像描述


太棒了,我的所有列都被设置为冻结状态,这就是为什么滚动条没有显示出来的原因。我从未想过这一点,谢谢! - Cyril Gandon
所有我的都被设置为冻结状态,但我仍然有问题 :/ - DontFretBrett
@DontFretBrett 尝试将 Frozen 设置为 False。 - Scorpion
4
补充说明:如果您想出现滚动条,则只能冻结最__左侧__的列。此外,第一__未冻结__列中至少要可见一部分内容。 - TaW
5
对我来说问题在于我有一个自动调整大小属性设置为“填充”的列,我把它改成了“显示的单元格”,然后就可以正常工作了。 - Ricky Stam
显示剩余2条评论

23

我知道这个问题已经解决了,但我发现另一个可能导致此问题的原因,所以想将其作为答案添加,以防其他人遇到相同的问题。

如果您的表单有一个DataGridView,该控件被停靠填充整个表单,并且表单还有一个状态栏,则取决于它们创建的顺序,状态栏可能会隐藏DataGridView的滚动条。 要修复此问题,请右键单击DataGridView,并选择“Bring to Front”(置于顶层)。


1
谁知道呢。这个答案救了我,因为我碰巧在我的表单底部使用了状态栏。"置于顶层"解决了我的问题,并开始在我的数据网格视图上显示水平滚动条。谢谢! - CODe
在从MSDN在线文档中复制示例代码后,我刚好遇到了同样的问题。 - mkluwe
没错!我也是100%在win7下使用VS2013。谢谢@Dan。 - gumuruh

10
当我遇到这个烦人的问题时,是由于DGV的AutoSizeColumnsMode属性被设置为Fill。我通过将该属性更改为AllCells来解决问题,但任何其他值也可以工作。即使DGV被停靠并且我有多个停靠面板,并且第一列被冻结,它仍然有效。

5
DGV的对接填充有些小问题。当您拥有多个对接面板、工具栏等时,这种情况就会发生。在运行时创建列时更为常见。
控件认为它比其容器更宽,水平滚动条没有出现。
冻结、自动调整大小、前置和其他提到的解决方法并不总是有效。最可靠的解决方法是将其Dock.Left并在运行时设置DGV的宽度。这样DGV就不会困惑于其实际宽度了。

我发现每次从另一个选项卡复制和粘贴dgv时,它都会以某种方式改变我的其他dgv的大小(将y提高约10个点),最终隐藏滚动条。 - NadimAJ

5

我有过类似的问题。我的解决方法是检查每个数据表格列并将Frozen设置为“false”。希望这能帮助到你。


1
这正是我的问题,现在已经解决了。不确定为什么会被踩。 - braX

4

我遇到了一个令人烦恼的问题。我已经在我的表单上创建了DataGridView,并在.cs文件中设置了所有数据绑定和属性设置。

我只是在我的代码后台文件(.cs)中注释了这一行,即

gvTblContent.AutoSize = true;

你不需要设置AutoSize属性,否则默认会提供水平和垂直滚动条,如果需要,你可以使用以下代码:
gvTblContent.ScrollBars = ScrollBars.Both;

2

我曾经遇到过类似的问题,不是由于frozen属性,而是由于我在程序中添加了一些行,很可能是由于DataGridView的bug导致的。在阅读了这个答案后,我解决了这个问题,使用如下代码:

dgv.PerformLayout()

在显示dgv之前,添加这些行。

我真是太蠢了。就在展示数据之前,我遇到了这个问题。我的问题是DGV被更新了,滚动条只显示了一半。你可以看到有一个滚动条,但实际的滚动条没有显示出来。在展示数据之前加上那个命令解决了我的问题。 - Jonathan Monestel

1
所有的冻结列都应该适合表单内。否则,水平滚动条将不会出现。如果没有水平滚动条,则将表单扩展到您看到最后一个冻结字段,然后水平滚动条就会神奇地出现。

1
在我的情况下,我只是使用了锚点Top、Bottom、Left、Right而不是DOCK Fill。
尝试一下。

1
我遇到了类似的问题,但是出现在 SplitContainer 内部。上述的方法都没有起作用,但是使用所有四个锚定点而不是 DataGridView 的 Dock.Fill 就可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接