DatagridView:删除未使用的空间?

时间:2010-01-29 15:03:02

标签: c# datagridview space

我想知道是否可以在C#中删除DataGridView控件的未使用空间(灰色空间)。我必须使DataGridView只显示白表。

alt text http://www.timvw.be/wp-content/images/datagridview-to-excel-1.gif

有什么建议吗?

8 个答案:

答案 0 :(得分:7)

有时候(尤其是winforms)最好的方法是破解:

dataGridView1.BackgroundColor = System.Drawing.SystemColors.Control;

我从这篇文章中偷了它: removing the empty gray space in datagrid in c#

答案 1 :(得分:5)

RowsHeaderVisible属性设置为false,您可以从设计器,类别Appearence或代码中执行此操作:

dataGridView1.RowsHeaderVisible = false;

为了删除左侧的指示符行,与灰色空间的其余部分一样,您可以尝试将前面提到的AutoSizeColumnsMode设置为Fill,但是仍然会使下半部分因缺少而变灰行。

您可以调整网格大小以适应细胞周围,而不是调整细胞大小以填充网格。这是否是一种可接受的方法取决于你的意图。

我的意思是,如果它只是困扰你的颜色,将背景颜色设置为白色就可以了。

答案 2 :(得分:4)

我找不到删除“未使用”或灰色(BackgroundColor)空间的简单方法。但是,对我来说一个有效的解决方案是隐藏DataGridView的边框并将其背景颜色更改为周围控件的背景。实质上,人们认为没有更多未使用的空间。

以下是伪代码片段:

TableGridView = DataGridView()
TableGridView.Width = 0
TableGridView.Height = 0
TableGridView.AutoSize = true 
TableGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
TableGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
TableGridView.BackgroundColor = SystemColors.ControlLightLight
TableGridView.BorderStyle = BorderStyle.None

我在某处读到AutoSize设置不适用,但它确实改变了我的想法。此示例表明周围控件的背景颜色为SystemColors.ControlLightLight,但可以根据需要进行修改。

如果有帮助,请投票。

答案 3 :(得分:2)

我相信你想要:

myDataGrid.AutoSizeColumnsMode = Fill

编辑:这只是调整列的大小。除了调整网格的高度之外,我不确定如何摆脱行灰色空间。

答案 4 :(得分:1)

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

答案 5 :(得分:0)

好吧,我努力找到这个问题的答案,但最后如果你想模仿一个空的DataGridView,那么很长的答案是创建“白色”Rectangle对象并使用Graphics来填充覆盖OnPaint方法的整个网格。

答案 6 :(得分:0)

去设计师:

1)更改与表格颜色相同的datagridview背景颜色

2)将datagridview“ BorderStyle”设置为“无”

答案 7 :(得分:-2)

我将这段代码用于其中,如果您不添加按钮列或图像,该代码将对我有用,我是从网站上获取的,但我不记得从哪里来了:

For Each row As DataGridViewRow In DataGridView1.Rows
If datagrid_limits > newHeight Then
newHeight =newHeight + 40
Else
Exit For
End If
Next
DataGridView1.Height = newHeight