海
在我执行函数的代码中,我经常得到异常错误,因为“对象引用没有设置为对象的实例”
以下功能如下
private void PageHeaderSetting(Graphics g)
{
try
{
DataTable dtPageHeader=new DataTable() ;
dtPageHeader = ds.Tables["Page Header"];
if (dtPageHeader.Rows.Count != 0)
{
foreach (DataRow dr in dtPageHeader.Rows)
{
if (dr.ItemArray[0].ToString() != "")
PageHeaderText = dr.ItemArray[0].ToString();
else
PageHeaderText = "";
if (dr.ItemArray[1].ToString() != "")
PageHeaderFont = (Font)dr.ItemArray[1];
else
PageHeaderFont = new Font("Tahoma", 18, FontStyle.Bold, GraphicsUnit.Point);
if (dr.ItemArray[2].ToString() != "")
PageHeaderFormat = AlignmentSetting(dr.ItemArray[2].ToString());
else
PageHeaderFormat = AlignmentSetting(Convert.ToString(Alignment.Left));
if (dr.ItemArray[3].ToString() != "")
PageHeaderColor = (System.Drawing.Color)dr.ItemArray[3];
else
PageHeaderColor = Color.Black;
PageFooterText = Word_Wrap(PageHeaderText, PageHeaderFont, g, 0);
PageHeader(g);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我怎样才能解决这个问题。任何人都可以帮助我吗?
从第二行我得到了异常错误 表示在声明数据表并将ds.Tables放入其中之后发生错误
答案 0 :(得分:6)
此异常意味着您尝试在null对象上调用方法。该异常应该给你一个堆栈跟踪,其中包含它被抛出的行号;这会帮你把它钉一点。你也可以尝试在visual studio中调试它,看看抛出异常的位置&看什么是空的。
答案 1 :(得分:4)
您应该检查实际值,而不是使用ToString()来检查ItemArray中是否有值。检查ItemArray [0] == null和ItemArray [0] == DBNull.Value。
编辑: 从您的评论中看来,您的数据集中可能没有任何名为“Page Header”的数据表。
尝试在行dtPageHeader = ds.Tables["Page Header"];
这样的事情:
if (dtPageHeader == null)
{
// There is no table named Page Header
}
答案 2 :(得分:1)
查看异常中的行号。
您的代码有许多链式调用,这是此异常的常见来源。如果这些链接属性中的任何一个返回null,则链中的“next”调用将失败并显示NullReferenceException。
答案 3 :(得分:0)
其中一个可能是真的: