网格视图的值在打印功能中变为空

Agnieszka推荐

我正在尝试打印网格视图。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章