在设计时将DataGridView.DefaultCellStyle.NullValue设置为null会在添加行运行时引发错误
时间:2020-03-05 18:48:55 来源:igfitidea点击:
在Visual Studio 2008中
- 向表单添加一个新的DataGridView
- 编辑栏
- 添加一个新的DataGridViewImageColumn
- 打开此列的CellStyle Builder(DefaultCellStyle属性)
- 将NullValue从System.Drawing.Bitmap更改为null
- 尝试在运行时将新行添加到DataGridView(dataGridView1.Rows.Add();)
- 我们收到以下错误:System.FormatException:单元格的格式化的值具有错误的类型。
如果将NullValue改回System.Drawing.Bitmap(原样),则在添加行时仍然会遇到相同的错误。
如果在运行时而不是设计时设置NullValue,则不会出现anny错误。
(dataGridView1.Columns [0] .DefaultCellStyle.NullValue = null;)
你能告诉我为什么吗?
解决方案
回答
这很可能是设计人员的错误。如果浏览一下.designer.cs文件(可能与将NullValue设置为null之前和之后的区别),我们应该能够看到它生成的代码。
回答
克罗诺斯是对的。
在设计时进行设置后,将其添加到.designer.cs中:
dataGridViewCellStyle1.NullValue =" null";
如果我将" null"修改为null,则可以正常工作。我用反射器检查了DataGridViewCellStyle.NullValue set_NullValue(Object)和get_NullValue,我认为字符串值不应在此处引发任何错误。
无论如何都要小心,如果要设置它的设计时间,那么不要忘记修改.design.cs。
回答
Change the NullValue from System.Drawing.Bitmap to null
在设计器中为NullValue的字段中输入" null"时,我们将指定字符串值" null"。将NullValue设置为非字符串值的唯一方法是以编程方式设置它,或者自己修改设计器代码。
回答
我发现,如果只从设计器中删除"格式"区域和默认空值区域中的所有项,那就更好了。然后,将其设置回真实的空值。我将尝试在init部分中将其设置为远离设计人员生成的废话。