C#DataGridView值读取失败

时间:2017-06-09 10:33:42

标签: c# winforms datagridview

我们在C#中遇到了一个奇怪的问题。

我们在.NET 3.5 SP1上运行WinForms应用程序。

在循环中读取网格时,代码无法读取行中的值。这种行为是间歇性的。失败的时间大约是20%。

代码非常简单:

for (int i = 0; i < dgv.Rows.Count; i++)
{
    if (dgv.Rows[i].Cells["colName"].Value == null || dgv.Rows[i].Cells["colName"].Value.ToString().Trim() == "")
    {
         // PROBLEM!!!
         continue;
    }
}

当程序运行时,我们可以看到填充的网格。我们的客户已向我们发送了填充网格的图片,但值显示为null。当值为null时,我们添加了一个调试代码来显示消息框。

这种情况受到了打击:

dgv.Rows[i].Cells["colName"].Value == null

这种情况发生在2台基于Win 7的PC上。内部没有复制。任何指针都会非常有用。

解决方案 最后,我们得到了解决这个问题的方法。在添加CurrentCellDirtyStateChanged事件处理程序

时解决了该问题
private void dgv_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    if (dgv.IsCurrentCellDirty)
    {
        dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

现在它已经解决了,我们仍然困惑于为什么一个简单的GridView需要添加这种事件。对此的任何想法都会有所帮助。

0 个答案:

没有答案