System.NullReferenceException”类型的未经处理的异常

野鼻孔 2016-06-14 03:07:27
各位大神,在按钮中,为什么会报错。但是结果照样会写到txt中,而MessageBox.Show就显示不出来了,直接报错,求如何改进的办法。谢谢

private void button3_Click(object sender, EventArgs e)
{

using (StreamWriter sk = new StreamWriter(textBox4.Text + "Export_To_Text.txt", false, Encoding.GetEncoding("Unicode")))
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
sk.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "|");
}
sk.Write("\r\n");

}
MessageBox.Show("已导出到Export_To_Text.txt中");
}

}

然后报错,“System.NullReferenceException”类型的未经处理的异常在 WindowsFormsApplication5.exe 中发生

其他信息: 未将对象引用设置到对象的实例。

如何解决啊,求大神指点。


}
...全文
3043 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
just59277 2016-06-14
  • 打赏
  • 举报
回复
dataGridView1 最后一行是空白的,所以会报NullReferenceException的错误,你可以去掉最后的空行,或者循环里面判断一下当前行是否为空。
homesos 2016-06-14
  • 打赏
  • 举报
回复
改一下。

if (null != dataGridView1.Rows[i].Cells[j].Value)
		{
			sk.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "|");
		}
		else
		{
			sk.Write(" |");
		}
xdashewan 2016-06-14
  • 打赏
  • 举报
回复
自己debug调试下,无非是哪个对象为空了
homesos 2016-06-14
  • 打赏
  • 举报
回复
有的 dataGridView1.Rows[i].Cells[j].Value 是 null 吧,试试:

if (NULL != dataGridView1.Rows[i].Cells[j].Value)
		{
			sk.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "|");
		}
		else
		{
			sk.Write(" |");
		}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧