日期:2014-05-18  浏览次数:20765 次

System.NullReferenceException:未将对象引用设置到对象的实例
//自定义ResultInfo()方法,实现提取指定信息,并将其显示在相应的文本框控件中,可是显示未将对象引用设置到对象的实例,排错了好长时间,无果,就高手指点
  private void ResultInfo(int j)
  {
  try
  {
  DataSet dsNew = DtReslut(j);
  this.txbClassName.Text = dsNew.Tables[0].Rows[0][0].ToString();//出错的地方
  this.txbClassNumber.Text = dsNew.Tables[0].Rows[0][1].ToString();
  this.txbGrade.Text = dsNew.Tables[0].Rows[0][2].ToString();
  this.txbShortName.Text = dsNew.Tables[0].Rows[0][3].ToString();
  this.txbTeacher.Text = dsNew.Tables[0].Rows[0][4].ToString();
  this.txbNo.Text = dsNew.Tables[0].Rows[0][5].ToString();
  }
  catch (Exception ex)
  {
  MessageBox.Show(ex.Message);
  }

  }

------解决方案--------------------
DtReslut(j)执行返回的DataSet是null吧。你设断点看看dsNew里有没有内容。
------解决方案--------------------
DataSet dsNew = DtReslut(j);
dsNew 取到值了吗?调试一下,

------解决方案--------------------
DataSet dsNew = DtReslut(j);
跟踪调试下代码

这个dsNew为null值了,所以后面肯定报空异常了。
------解决方案--------------------
dsNew是null或者dsNew里的Table的数量是0,或者Table里的行数是0或者列数是0,就这几种情况了
------解决方案--------------------
加一个条件
if(dtNew!=null)
{
.......
}
------解决方案--------------------
C# code

DataSet dsNew = DtReslut(j);
if(dtNew!=null)
{
  if(dtNew.Talbes[0].Rows.count>0)
  {
  this.txbClassName.Text = dsNew.Tables[0].Rows[0][0].ToString();//出错的地方
  this.txbClassNumber.Text = dsNew.Tables[0].Rows[0][1].ToString();
  this.txbGrade.Text = dsNew.Tables[0].Rows[0][2].ToString();
  this.txbShortName.Text = dsNew.Tables[0].Rows[0][3].ToString();
  this.txbTeacher.Text = dsNew.Tables[0].Rows[0][4].ToString();
  this.txbNo.Text = dsNew.Tables[0].Rows[0][5].ToString();
  }
}

------解决方案--------------------
探讨

引用:
C# code

DataSet dsNew = DtReslut(j);
if(dtNew!=null)
{
if(dtNew.Talbes[0].Rows.count>0)
{
this.txbClassName.Text = dsNew.Tables[0].Rows[0][0].ToString();//出错的地方
this.txbClassNu……