4

在 Visual Studio 2008 中

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

如果将 NullValue 改回 System.Drawing.Bitmap (原样),添加行时仍然会出现相同的错误。

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

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

4

5 回答 5

2

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

于 2008-09-07T10:29:34.983 回答
2

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

dataGridViewCellStyle1.NullValue = "null";

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

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

于 2008-09-07T10:59:42.880 回答
1

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

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

于 2008-11-28T16:46:58.370 回答
1

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

于 2011-08-19T20:31:36.963 回答
0

我发现如果您从“格式”区域和默认空值区域一起从设计器中删除项目,效果会更好。然后它将它设置回真正的空值。我将尝试将它设置在初始化部分,远离设计师生成的废话。

于 2010-01-25T05:39:30.563 回答