DataSet.clear()上的NullreferenceException问题

时间:2010-02-26 12:41:40

标签: c# datagridview nullreferenceexception

我正在使用datagridview上的一行中的值来构建一个图像路径以传递到图片框。

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
    DataGridViewRow currentRow = new DataGridViewRow();
    currentRow = dataGridView1.CurrentRow;
    string valueJob = currentRow.Cells[2].Value.ToString();
    string valueBatch = currentRow.Cells[3].Value.ToString();
    string valueImmagine = currentRow.Cells[4].Value.ToString();
    string result = Octopus2.Properties.Settings.Default.DataPath + "\\" + valueJob + "\\" + valueBatch + "\\" + valueImmagine + ".jpg";   
    pictbox.ImageLocation = result;
}

问题是,当我使用另一个控件执行DataSet.clear()时,代码返回以下错误:“NullreferenceException未被用户代码处理”。

提前感谢您,我们将不胜感激。

3 个答案:

答案 0 :(得分:1)

虽然我在你显示的代码中看不到DataSet.clear()但是如果DataSet.clear()给出了这个错误,那么DataSet为null。

答案 1 :(得分:1)

正如我之前提到的,DataSet.clear()由另一个由控件调用的事件处理程序调用,一个重置按钮。 我通过这样做解决了这个问题:

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
    if (dataGridView1.RowCount >=1)
    {
        DataGridViewRow currentRow = new DataGridViewRow();
        currentRow = dataGridView1.CurrentRow;
        string valueJob = currentRow.Cells[2].Value.ToString();
        string valueBatch = currentRow.Cells[3].Value.ToString();
        string valueImmagine = currentRow.Cells[4].Value.ToString();

        string result = Octopus2.Properties.Settings.Default.DataPath + "\\" + valueJob + "\\" + valueBatch + "\\" + valueImmagine + ".jpg";

        pictboxImpegnativa.ImageLocation = result;
    }
    else
    {
        MessageBox.Show("good work.");
    }
}

感谢您的时间和帮助。

答案 2 :(得分:0)

您忘了检查currentRow.Cells[x].Value是否也可以为空。您应该添加另一个看起来像这样的代码:

if (currentRow.Cells[n].Value != null) 
{
    // your code here
}

相信我,你需要捕获一个内部对象,而不仅仅是来自DataGridViewRow的空值。