在C#中的DataGridView上迭代-对象引用未设置为对象的实例

本文关键字:设置 对象 实例 对象引用 中的 DataGridView 迭代 | 更新日期: 2023-09-27 18:22:44

我有以下代码:

        foreach (DataGridViewRow r in DataGridObject.Rows)
        {
            MyDataSource.ForEach( 
                delegate( Product p)
                {
                    if (r.Cells["Product"].Value.ToString() == p.Title)
                    {
                        tally += p.Price;
                    }
                }
            );
        }

在运行时的if语句中,我得到了error:

An unhandled exception of type 'System.NullReferenceException' 
occurred in WindowsFormsApplication1.exe
Additional information: Object reference not set to an instance of an object.

可能是什么问题?

有没有想过我哪里错了?

在C#中的DataGridView上迭代-对象引用未设置为对象的实例

这样做

             foreach (DataGridViewRow r in DataGridObject.Rows)
    {
        MyDataSource.ForEach( 
            delegate( Product p)
            {
                if (!string.isNullorWhiteSpace(Convert.ToString(r.Cells["Product"].Value)) && Convert.ToString(r.Cells["Product"].Value).Equals(p.Title,StringComparison.OrdinalIgnoreCase))
                {
                    tally += p.Price;
                }
            }
        );
    }
 foreach (DataGridViewRow r in DataGridObject.Rows)
        {
            MyDataSource.ForEach( 
                delegate( Product p)
                {
                    if(r.Cells["Product"]!=null)
                     {
                      if(r.Cells["Product"].Value!=null)
                      {
                        if (r.Cells["Product"].Value.ToString() == p.Title)
                        {
                          tally += p.Price;
                        }
                      }
                    }
                }
            );
        }

您有一个确切地带有"Product"的列吗?你能试试索引吗?

r.Cells[1].Value

像那样的东西?

此外,您可能需要将其转换为特定的单元格类型?例如:如果它是一个文本框单元格,那么你可能必须进行

r.Cells[1].Text

需要检查单元格。空的值