在设计时将 DataGridView.DefaultCellStyle.NullValue 设置为 null 会在添加行运行时引发错误

Setting DataGridView.DefaultCellStyle.NullValue to null at designtime raises error at adding rows runtime

提问人:nandras 提问时间:9/7/2008 更新时间:8/20/2011 访问量:14778

问:

在 Visual Studio 2008 中

  • 向窗体添加新的 DataGridView
  • 编辑列
  • 添加新的 DataGridViewImageColumn
  • 打开此列的 CellStyle 生成器(DefaultCellStyle 属性)
  • 将 NullValue 从 System.Drawing.Bitmap 更改为 null
  • 尝试在运行时向 DataGridView 添加新 Row (dataGridView1.Rows.Add();)
  • 出现以下错误:System.FormatException: Formatted 单元格的值类型错误。

如果将 NullValue 改回 System.Drawing.Bitmap(原样),则在添加行时仍会遇到相同的错误。

如果在运行时而不是在设计时设置 NullValue,则不会出现 anny 错误。 (dataGridView1.Columns[0]。DefaultCellStyle.NullValue = null;)

你能告诉我这是为什么吗?

C# DataGridView null

评论


答:

2赞 ljs 9/7/2008 #1

这很可能是设计器中的一个错误;如果您查看 .designer.cs 文件(可能在将 NullValue 设置为 null 之前和之后进行差异),您应该能够看到它生成的代码。

2赞 nandras 9/7/2008 #2

克罗诺兹是对的。 在设计时设置它后,它会将其添加到 .designer.cs:

dataGridViewCellStyle1.NullValue = “null”;

如果我将“null”修改为null,那么它可以正常工作。我检查了 DataGridViewCellStyle.NullValue set_NullValue(Object) 并使用反射器get_NullValue,我认为字符串值不应该在这里引发任何错误。

无论如何,要小心这一点,如果你想在设计时设置它,那么不要忘记修改.design.cs。

1赞 Thies 11/29/2008 #3

将 NullValue 从 System.Drawing.Bitmap 更改为 null

在设计器中将“null”输入到 NullValue 的字段中时,将指定字符串值“null”。将 NullValue 设置为非字符串值的唯一方法是以编程方式设置它,或者通过自己修改设计器代码来设置它。

0赞 user258183 1/25/2010 #4

我发现,如果您只是从“格式”区域和默认的空值区域一起从设计器中删除该项目,那就更好了。然后,它将其设置回实际的 null。我将尝试将其设置在 init 部分中,远离设计师生成的废话。

评论

0赞 1/25/2010
这又是尤达,是的,通过设置:<datagridview>.<colname>。DefaultCellStyle.DataSourceNullValue = CheckState.Unchecked;<datagridview>.<colname>。DefaultCellStyle.NullValue = CheckState.Unchecked;它让我做我想做的事。
1赞 VipX1 8/20/2011 #5

复选框不能具有 String 值。 不要在 “IDE 属性”对话框中设置任何默认值。 我将“Empty”写入 RowsDefaultCellStyle.Format 属性,这导致了错误。 这是自己造成的。作为修复,我试图将复选框状态设置为未选中,但我只需要删除字符串值。