Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGridView如何在整个客户端区域显示网格线?_C#_Winforms_Visual Studio 2008 - Fatal编程技术网

C# DataGridView如何在整个客户端区域显示网格线?

C# DataGridView如何在整个客户端区域显示网格线?,c#,winforms,visual-studio-2008,C#,Winforms,Visual Studio 2008,有没有办法在整个datagridview客户端区域中打开网格线,而不是在添加行时使网格线可见 我已经阅读了msdn,但没有发现任何有用的东西 C#,winforms,visual studio 2008 谢谢,R.您可以向网格中添加一堆虚拟行并使其只读。您可以向网格中添加一堆虚拟行并使其只读。您可以对DataGridView进行子类化,覆盖其PaintBackground事件并添加一些行的图像。 举一些例子 我意识到这有点像黑客。:) 您可以对DataGridView进行子类化,覆盖其Paint

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

我已经阅读了msdn,但没有发现任何有用的东西

C#,winforms,visual studio 2008


谢谢,R.

您可以向网格中添加一堆虚拟行并使其只读。

您可以向网格中添加一堆虚拟行并使其只读。

您可以对DataGridView进行子类化,覆盖其PaintBackground事件并添加一些行的图像。 举一些例子


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

您可以对DataGridView进行子类化,覆盖其PaintBackground事件,并添加一些线条的图像。 举一些例子


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

当我的数据网格中有许多行是从配置文件中获取的时,我就遇到了这个问题。如果行数较少,datagrid的背景色为灰色,看起来很难看。经过讨论,我们决定使数据网格高度动态化。这反过来又会使用datagrid所在的父窗口来更改其高度。现在看起来很好。这不是你问题的正确答案,而是
考虑样式问题。

当我在DATAGRID中有多少行从配置文件中取走时,我遇到了这个问题。如果行数较少,datagrid的背景色为灰色,看起来很难看。经过讨论,我们决定使数据网格高度动态化。这反过来又会使用datagrid所在的父窗口来更改其高度。现在看起来很好。这不是你问题的正确答案,而是
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";
    }
}
考虑风格问题。

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,并设置其背景图像


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

我会在Andy的方案和虚拟模式之间进行选择

在grid view的虚拟模式中,您需要通过处理来自控件的大量事件来提供数据存储的接口。在这种情况下,您可以直接设置RowCount属性,然后在CellValueRequired事件中决定单元格是否包含数据。您必须确定将填充控件的行数。
我会在安迪的提议和虚拟模式之间做出选择

在grid view的虚拟模式中,您需要通过处理来自控件的大量事件来提供数据存储的接口。在这种情况下,您可以直接设置RowCount属性,然后在CellValueRequired事件中决定单元格是否包含数据。您必须确定将填充控件的行数。

Luiscencio,这只是一个风格问题,我喜欢listview的外观,但需要datagrid的功能。Luiscencio,这只是一个风格问题,我喜欢listview的外观,但需要datagrid的功能。我确实考虑过这一点,但想知道是否有一种“正确”的方法或设置可以用于“打开网格线”,而不必开始处理伪行。但是谢谢你,R。我确实考虑过这一点,但我想知道是否有一种“正确”的方法或设置可以用来“打开网格线”,而不必开始处理虚拟行。但是,谢谢,R。正如我已经在下面与Gary讨论过的,我不想添加一组虚拟列和行,但感谢您的建议。正如我已经在下面与Gary讨论过的,我不想添加一组虚拟列和行,但感谢您的建议。Andy,我倾向于这个答案,只是还没来得及“尝试一下”,这会让你知道结果。安迪,我倾向于这个答案,只是还没来得及“尝试一下”,我需要研究虚拟模式,因为我以前从未遇到过,但目前我倾向于安迪的建议。当我开始实施时,我会让你知道结果。谢谢你的建议。我需要研究虚拟模式,因为我以前没有遇到过它,但目前我倾向于安迪的建议。当我开始实施时,我会让你知道结果。谢谢你的建议。