我正在尝试打印网格视图。
我null exception
在这条线上
e.Graphics.DrawString
(
this.GridView
.Rows[rowCounter]
.Cells[0]
.Value
.ToString(),
valueFont,
Brushes.Black,
realwidth,
realheight
);
该功能中存在哪些 printDocument1_PrintPage
因此,我尝试this.GridView.Rows[rowCounter].Cells[0].Value.ToString()
用像这样的字符串替换Hello
,异常消失并且代码可以正常工作。
然后,创建一个按钮,并在该按钮内执行以下操作:
int r = 0;
while (r < GridView.Rows.Count)
{
Console.WriteLine(GridView.Rows[r].Cells[0].Value);
r++;
}
return;
并且该代码正常运行,无一例外
那么,为什么当从打印功能访问网格视图时,我得到了null异常,而当从另一个函数访问它时,它工作正常吗?
Lajos Arpad指出了“有时”值包含空值,有时似乎不包含空值的原因。.:
他们总是这样做,但是Console.Write()
安静地忽略了空值,因此您的测试具有误导性。
它们总是在最后一行包含空值的原因是该DataGridview
属性AllowUserToAddRows
,默认情况下为true。结果是在最后插入一个空行,以便用户可以输入数据并添加更多行。
如果不希望这样做,则必须AllowUserToAddRows
在填充DGV之前将其关闭。
为了使应用程序更健壮,您可能需要在某些时候包括对null的检查。这里要考虑的主要问题是如何对待它们:像控制台一样忽略它们,告诉用户,让他/她继续或不继续,或者将问题记录到IT人员。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句