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

时间:2008-09-07 09:28:23

标签: c# datagridview null

在Visual Studio 2008中

  • 将新的DataGridView添加到表单
  • 编辑列
  • 添加新的DataGridViewImageColumn
  • 打开此列的CellStyle Builder(DefaultCellStyle属性)
  • 将NullValue从System.Drawing.Bitmap更改为null
  • 尝试在运行时向DataGridView添加新行 (dataGridView1.Rows.Add())
  • 您收到此错误:System.FormatException:Formatted 单元格的值类型错误。

如果将NullValue更改回System.Drawing.Bitmap(实际上),则在添加行时仍会出现相同的错误。

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

你能告诉我为什么会这样吗?

5 个答案:

答案 0 :(得分:2)

这可能是设计师的一个错误;如果你仔细看看.designer.cs文件(也许在你将NullValue设置为null之前和之后做一个diff),你应该能够看到它生成的代码。

答案 1 :(得分:1)

Kronoz是对的。 在设计时将其设置为将其添加到.designer.cs:

dataGridViewCellStyle1.NullValue =“null”;

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

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

答案 2 :(得分:1)

  

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

我发现如果你只是从格式区域和默认的空值区域中删除设计器中的项目会更好。然后它将它设置回真正的null。我将尝试在init部分设置它远离设计器生成的废话。