解决NullReference异常

时间:2011-07-09 05:57:21

标签: c# .net exception-handling crystal-reports nullreferenceexception

我使用crystal report在我的c#windows应用程序中实现报告。我创建一个表单来显示Report的打印预览。我使用以下代码来显示预览:

private ReportDocument _reportDocument;
public CrystalReportPrintPreviewForm(ReportDocument reportDocument)
{
    InitializeComponent();

    _reportDocument = reportDocument;
}
private void CrystalReportPrintPreviewForm_Load(object sender, EventArgs e)
{
    if(_reportDocument!=null)
    crystalReportViewer1.ReportSource = _reportDocument;
}

我还使用以下代码将“ReportDocument”发送到此表单并显示它:

ReportDocument reportDocument = new ReportDocument();
reportDocument.Load(Application.StartupPath + "\\Reports\\WorkGroupReport.rpt");
kargarBandarDataset.WorkGroup.DefaultView.RowFilter = workGroupBindingSource.Filter;
reportDocument.SetDataSource(kargarBandarDataset.WorkGroup.DefaultView.ToTable());
reportDocument.SetParameterValue("CurrentDate",shamsi.ShamsiDate());

CrystalReportPrintPreviewForm crystalReportPrintPreview = new CrystalReportPrintPreviewForm(reportDocument);
crystalReportPrintPreview.ShowDialog();

有时我会在以下代码行中收到NullReferenceException错误消息:

crystalReportPrintPreview.ShowDialog();

我如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

没有关于如何处理NullReferenceException的确切答案。确保你在VS(Debug->异常标记公共语言运行时)中启用了“延伸”预测,找到了被投掷的地方,并试图找出原因。

另外,尝试从Exception的.Message属性中获取更多信息。

通常由提交给类的方法或构造函数的一些空参数引起的NullReference。尝试调试并查看传递给抛出异常的对象的内容;

答案 1 :(得分:0)

你确定已经创建了crytsalReportPrintPreview吗?如果该行

crystalReportPrintPreview.ShowDialog();

是实际抛出错误的行,NullReference异常似乎表明crystalReportPrintPreview为null。

要检查的另一件事是reportDocument是否为null - 可能由于某种原因DataSource为null。我将以下内容添加到您的代码中:

if (reportDocument == null)
{
    throw new Exception("reportDocument is null!");
}
else
{
    // put your CrsytalReportPrintPreviewForm code here
}

答案 2 :(得分:0)

与第一步一样,我建议您确保在VS中启用了例外处理。

手上没有电脑,但必须是:

调试 - >例外

出现diaolog,您可以在其中查看您感兴趣的例外情况。 如果这不起作用,您可以尝试@Marlyn

建议的方式

希望这有帮助。

答案 3 :(得分:0)

我怀疑你的参数代码:

reportDocument.SetParameterValue("CurrentDate",shamsi.ShamsiDate);

如果参数对应于没有数据的日期,那么这可能是您的空来源。