.NET C#应用程序中DataGridViewRow的性能缓慢

.NET C#应用程序中DataGridViewRow的性能缓慢,c#,datagridview,C#,Datagridview,我正在尝试找出我支持的应用程序中的一些行为。该片段是: foreach (DataGridViewRow pGridRow in grdEmail.Rows) { pGridRow.Cells[0].Value = chkSelectAll.Checked; pCount = pGridRow.Index + 1; } 这实际上是在单击全选复选框时尝试选择网格中的所有行(选中复选框) 当网格有几行(大约一百行)时,它工作得很好。然而,当我有大约5000行时,这个东西会爬行。pG

我正在尝试找出我支持的应用程序中的一些行为。该片段是:

foreach (DataGridViewRow pGridRow in grdEmail.Rows)
{
    pGridRow.Cells[0].Value = chkSelectAll.Checked;
    pCount = pGridRow.Index + 1;
}
这实际上是在单击全选复选框时尝试选择网格中的所有行(选中复选框)

当网格有几行(大约一百行)时,它工作得很好。然而,当我有大约5000行时,这个东西会爬行。
pGridRow.Cells[0].Value=chkSelectAll.Checked
命令需要一秒钟左右的时间(通过将Console.prints放在上面和下面来计时)


如果您能想出解决这个问题的办法,我们将不胜感激。

一次看到5000行有什么意义

这不能分页吗?

默认情况下,复选框不能按选中状态发送吗?

尝试直接修改基础数据源(如果有),而不是设置单元格的值

//assuming datasetFoo.Tables(0) is the DataSource of the DataGridView
foreach (DataRow rowFoo in datasetFoo.Tables(0) { 
        rowFoo ("Sel") = chkSelectAll.Checked; 
    } 

同时显示数千行是一种浪费,用户很难找到所需的数据。我绝对推荐分页。你的用户会感谢你的。(除非他们明确要求立即查看5000,这似乎很愚蠢。)

尝试设置属性:

grdEmail.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
grdEmail.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;

因为对于这两个属性的其他值,DataGridView似乎正在尝试调整行和列的大小,即使您只是在网格中选中一些复选框。

此DataGridView中有多少列?查找和设置单元格文本的一两秒钟时间似乎很长。一次显示5000行有很多理由。一个人的分类。5000实际上并不是那么多。我有一些用户如果不能一次看到所有的数据就会惊慌失措。我没有想到这一点。我有一个带有复选框的专栏,它花费了太多的时间来检查所有内容。设置AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode。无解决了性能问题。谢谢