水平滚动条在DataGridView上不可见

时间:2011-03-07 10:57:49

标签: c# .net winforms datagridview scrollbar

我在Window窗体上有一个DataGridView,其中填充了30列和数千行。 ScrollBars属性设置为Both,但仍然无法看到水平滚动条。即使我无法用键盘上的箭头键滚动。

我也尝试将ScrollBars属性设置为Horizontal,但这没有任何区别。

有什么建议吗?

由于

20 个答案:

答案 0 :(得分:36)

好伙计们,整理好了。

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

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

干杯

enter image description here

答案 1 :(得分:16)

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

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:3)

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

答案 4 :(得分:2)

我遇到了这个恼人的问题。我已经在我的Form上创建了DataGridView,并在.CS文件中设置了所有数据绑定和属性设置。

我刚刚在我的代码后面注释了文件(.cs),即

gvTblContent.AutoSize = true;

您无需设置AutoSize属性,默认情况下会提供水平和垂直滚动条,否则您可以使用:

gvTblContent.ScrollBars = ScrollBars.Both;

答案 5 :(得分:2)

DGV的停靠装置是一辆小马车 当你有多个停靠面板,工具栏等时会发生这种情况。 在运行时创建列时更常见。

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

冻结,自动调整,前面提到的其他补救措施并不总是有效。 最可靠的解决方法是Dock.Left并在运行时设置DGV的宽度。 这样DGV就不会对它的宽度感到困惑。

答案 6 :(得分:0)

我有一个类似的问题,但在SplitContainer内部。以上方法均无效,但请使用所有四个锚点代替DataGridView的Dock.Fill。

答案 7 :(得分:0)

解决了我的问题,但以上都不是。

在我的情况下,我正在运行时创建整个表单。每个DataGridView都是TableLayoutPanel中的Dock.Fill。如果只需要一个,则不必为TableLayoutPanel指定行或列,而应为100%。但是,这样做会破坏DataGridView。只需添加行100%定义即可解决我的问题。

答案 8 :(得分:0)

您还可以检查一件事。 GridView控件的“ Enabled”属性应设置为“ true”。 DataGridView Properties:

答案 9 :(得分:0)

在我以编程方式添加了一些行之后,我遇到了类似的问题,这并不是由于frozen属性,而是由于DataGridView错误。在this answer阅读了另一个问题后,我使用以下方法解决了问题:

dgv.PerformLayout()

在添加了这些行之后,即将显示dgv

答案 10 :(得分:0)

所有冻结的列都应适合该表格。 否则,水平滚动条将不会显示。 如果没有水平滚动条,则使您的窗体更宽,直到看到最后一个冻结的字段,然后水平滚动条将神奇地出现。

答案 11 :(得分:0)

tableLayoutPanel内部的DataGridView出现了相同的问题。

以上都不对我有帮助。

事实证明,在tableLayoutPanel中将DataGridView设置为 AutoSize 的列。

解决方案是将tableLayoutPanel列设置为实际值或百分比。

答案 12 :(得分:0)

我将一些冻结的第一列设置为true(H_bar)仍然有效。但是我将Frozen = true设置为一个不可见的列(column.visible = false),它消失了。

答案 13 :(得分:0)

就我而言,直到我意识到上面的冻结列状态为只读时,滚动条才出现。我已经完成了只读列的冻结列以及dataGridView中的一个可编辑列。当我删除可编辑列的 frozen=false 时,出现水平条。

答案 14 :(得分:0)

我有一个DataGridView坐在TableLayoutPanel的单元格内,并且DataGridView上都没有显示滚动条。我认为DataGridView的大小也没有被正确管理,DataGridView被停靠以填充TableLayoutPanel的单元格。我没有任何冷冻柱。

我能够通过将DataGridView放在Panel中,并在Panel上设置AutoScroll = true来修复它,让Panel管理滚动。我停靠面板以填充TableLayoutPanel的单元格内部,并停靠DataGridView以填充Panel内部。

答案 15 :(得分:0)

我在VS2015中也遇到过winform这个问题。

winform的表格布局分为4行,1列。在行中放置面板以放置除最后一行中的DataGrid行之外的其他控件。 DataGrid设置为Dock以填充。表单底部还有一个状态栏,供将来使用。

我发现状态栏阻止了滚动条,如前所述。

我在表格布局中添加了另一行,但是在运行时和设计时都会在表单底部显示一个大的空白区域。调整表单大小也没有解决。我尝试设置表格布局的行高,但它不起作用。我试过1像素,5像素等没有变化。最后,我放弃并删除了状态栏,无论如何都没有使用它。

答案 16 :(得分:0)

我这边的多个显示/隐藏列导致了同样的问题。不得不补充一下 dataGridView1.ScrollBars = ScrollBars.Both;在我处理datagridview

中的所有列和行之后

在此之前,上述任何内容都没有帮助 1.没有冷冻柱 2.表单加载有dataGridView1.ScrollBars = ScrollBars.Both; 3.没有状态栏

答案 17 :(得分:0)

就我而言,我只使用了ANCHOR Top,Bottom,Left,Right而不是DOCK Fill。

试试吧。

答案 18 :(得分:0)

我遇到了同样的问题,发现我的dataGridView比它所使用的形式略大。我调整了大小以适应Form并且它有效! 希望这有帮助!

答案 19 :(得分:0)

我也遇到了这个问题。在我的情况下,这是一个愚蠢的情况。

请检查DataGridView的位置/大小是否超出表单。