DataGridView如何在整个客户区显示网格线?

时间:2010-06-23 20:48:55

标签: c# winforms visual-studio-2008

有没有办法打开整个datagridview客户端区域中的网格线,而不是在添加行时它们变得可见?

我已经阅读了msdn但没有找到任何用途。

C#,winforms,visual studio 2008

谢谢,R。

5 个答案:

答案 0 :(得分:3)

您可以继承DataGridView,覆盖其PaintBackground事件并添加一些行的图像。 一些例子,See herehere

我意识到这有点像黑客。 :)

答案 1 :(得分:1)

我会选择安迪的提议和虚拟模式。

在网格视图的虚拟模式中,您需要通过处理来自控件的多个事件来提供数据存储的接口。在这种情况下,您可以直接设置RowCount属性,然后在CellValueNeeded事件中决定单元格是否包含数据。您将必须确定将填充您的控件的行数。 http://msdn.microsoft.com/en-us/library/ms171622.aspx

答案 2 :(得分:0)

您可以在网格中添加一堆虚拟行,并将它们设为只读。

答案 3 :(得分:0)

当我的数据网格中有多少行从配置文件中获取时,我遇到了这个问题。在行数较少的情况下,数据网格看起来很丑,灰色背景颜色。经过讨论,我们决定使datagrid高度动态化。这反过来又采用数据网格所在的父窗口来改变其高度。现在它看起来很好。这不是你问题的正确答案,而是 考虑风格问题。

答案 4 :(得分:0)

int MAX_ROWS = 10;
int MAX_CELLS = 10;
dataGridView1.ColumnCount = MAX_CELLS;
int currentRowIndex = dataGridView1.Rows.Add(MAX_ROWS);
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    foreach (DataGridViewCell cell in row.Cells)
    {
        cell.ValueType = typeof(String);
        cell.Value = "This is the: " + cell.OwningColumn.Index.ToString() + 
            " " + cell.OwningRow.Index.ToString() + " cell";
    }
}

我知道这不是最好的解决方案,但它不需要制作一个类似DataGridView的新自定义控件,并设置它的背景图像。