问题描述
各位大神,在按钮中,为什么会报错。但是结果照样会写到txt中,而MessageBox.Show就显示不出来了,直接报错,求如何改进的办法。谢谢privatevoidbutton3_Click(objectsender,EventArgse){using(StreamWritersk=newStreamWriter(textBox4.Text+"Export_To_Text.txt",false,Encoding.GetEncoding("Unicode"))){for(inti=0;i<dataGridView1.Rows.Count;i++){for(intj=0;j<dataGridView1.Columns.Count;j++){sk.Write(dataGridView1.Rows[i].Cells[j].Value.ToString()+"|");}sk.Write("rn");}MessageBox.Show("已导出到Export_To_Text.txt中");}}然后报错,“System.NullReferenceException”类型的未经处理的异常在WindowsFormsApplication5.exe中发生其他信息:未将对象引用设置到对象的实例。如何解决啊,求大神指点。}
解决方案
解决方案二:
有的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("|");}
解决方案三:
自己debug调试下,无非是哪个对象为空了
解决方案四:
改一下。if(null!=dataGridView1.Rows[i].Cells[j].Value){sk.Write(dataGridView1.Rows[i].Cells[j].Value.ToString()+"|");}else{sk.Write("|");}
解决方案五:
dataGridView1最后一行是空白的,所以会报NullReferenceException的错误,你可以去掉最后的空行,或者循环里面判断一下当前行是否为空。