C# DataGridView- 如何启用垂直滚动条

11

DataGridView(表单)包含足够的行以显示垂直滚动条。但是它没有启用。移动的滑块缺失,向上和向下按钮变灰。

=> 有垂直滚动条但未启用。

我尝试了:

  1. 在填充DataGridView后更新控件。
  2. 重新调整整个面板的大小。
  3. Frozen属性为false。
  4. 在单元格中单击后,可以使用上下键滚动,但是滚动条仍未启用。

如果在运行时调整控件的大小(DataGridView在Splitpanel上),则可以使用滚动条,例如现在已启用。


你试过这个吗?http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.horizontalscrollbar.aspx - Polynomial
2
如果你在谈论行和上下按钮,那么我认为你可能正在寻找VerticalScrollbar。 - paul
请参考以下链接:http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/9c9d2d67-c45f-4318-81ef-bf652358f582/ - Romil Kumar Jain
问题并不在于垂直滚动条的可见性。 - Thomas
你尝试将宽度属性设置为更小的值了吗? - lolo
是的,我已经改变了宽度。不过,数据网格视图和分割容器之间有20个像素的限制。但仍未启用。 - Thomas
6个回答

7

请尝试以下方法:

1. 您的某一列可能已将frozen属性设置为True

对于所有列,该属性应为False

2. 将问题列的AutoSizeMode设置为AllCells

3. mygrid.DockStyle = DockStyle.Fill


我仔细检查了一遍,没有一个列被设置为冻结。 - Thomas
  1. | was: fill | is: AllCells | - 然后,滑块被启用并且可以使用了!为什么以及如何?但非常感谢。
- Thomas

2
  1. 你应该将datagridview嵌入到panel中
  2. 如果你有一些冻结的行,请确保在填充数据到gridview之后再设置这些行。

如果你先设置了冻结行,那么当添加新行时,新行会采用第一行的默认样式,所有的gridview行都会有选项row.frozen = true。这就是为什么垂直滚动条不会出现的原因。


1
我曾遇到水平滚动条的类似问题。 在网格上执行 PerformLayout 无法解决它。 事实证明,在我的情况下,问题是表单被禁用了。 我们有一个基础设施,在加载时禁用表单,异步加载一堆东西,最后启用表单。 由于某种原因,当表单被启用时,这足以使滚动条保持禁用状态(并且与您的情况一样,在运行时调整表单大小会启用滚动条)。 所以对我来说,解决方案是在启用表单之后在网格上调用PerformLayout

1

1

将DataGridView的ScrollBar属性设置为Both。


DataGridView类没有名为AutoScroll的属性(我也搜索了一下)。请参阅:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx - Thomas
之前我以为你在问Dot net bar datagridview控件。 - Asif

0

我知道这已经很老了,但是这让我苦恼了几周。

我有两个DataGridViews在嵌套的面板上。DataGridViews是Dock->Fill,它们所在的面板是Dock->Fill,在其他嵌套面板中。

当窗体被调整大小时,垂直滚动条非常不可靠 - 经常情况下,滚动条可能是可见的但被禁用,即使我可以使用行中的向下箭头手动向下滚动网格。

最终的解决方案是使用"Tzachs"建议 - 在任何调整大小事件之后,在网格上调用"PerformLayout()"方法。 这似乎是网格中的一个错误 - 当网格在嵌套面板上自动调整大小时,无法检测到需要滚动条。

至少PerformLayout()解决了我的问题。


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