DataSet.clear() 上的 NullreferenceException 问题

问题描述 投票:0回答:3

我正在使用 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 未被用户代码处理”。

预先感谢您,任何帮助将不胜感激。

c# datagridview nullreferenceexception
3个回答
1
投票

虽然我无法在您显示的代码中看到 DataSet.clear() ,但如果 DataSet.clear() 给出此错误,则 DataSet 为空。


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.");
    }
}

0
投票

您忘记检查

currentRow.Cells[x].Value
是否也可以为空。您应该添加另一个如下所示的代码:

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

相信我,您需要捕获一个内部对象以获取空值,而不仅仅是来自

DataGridViewRow
的对象。

© www.soinside.com 2019 - 2024. All rights reserved.