c# – DataGridViewCheckBoxColumn:布尔列上的FormatException
我甚至不知道在哪里修复此错误.
在我点击DataGridViewCheckBoxColumn中的复选框来检查它并离开该单元格后,最近我得到了以下异常:
这是DataGridView的完整错误对话框: 我甚至不知道我能找到哪个事件来找到这个问题的原因.在错误发生之前触发Validating和CellFormatting事件,但两者都会运行. e.ColumnIndex = 0 e.RowIndex = 0 e.Context = Commit 完整的异常(e.Exception.ToString())是:
这是相关列属性的屏幕截图,该列具有ThreeState = false,并且没有为FalseValue,TrueValue或IndeterminateValue指定任何内容: BindingSource的数据源是List< ErpService.ArrivalChargeAssignment>其中ArrivalChargeAssignment是我的WCF Web服务中的一个类,带有bool-field IsAssigned,因此它永远不能为null(甚至是空字符串). 解决方法
好吧,我已经用Windows窗体设计器做了一些测试,我在代码生成器中发现了一些奇怪的东西.所以,我在测试中所做的是
首先,我添加了一个DataGridViewCheckBoxColumn类型的列,并使用数据表填充了datagridview.我添加了一些空值的记录. 现在,它工作正常,数据显示正确,也没有给出任何错误. 我回到了DefaultCellStyle属性并重新设置了False值.然后我再次运行该项目.但是,它仍然向我显示同样的错误. 因此,加载了Form.designer.cs文件并检查了dataGridViewCellStyle1对象.我发现该属性设置为字符串类型值“False”而不是布尔类型false. dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; dataGridViewCellStyle1.NullValue = "False"; this.Column1.DefaultCellStyle = dataGridViewCellStyle1; this.Column1.HeaderText = "Check Box"; this.Column1.Name = "chkCol"; 所以,我已按如下方式更新该行,并再次启动该项目.现在,错误消失了. dataGridViewCellStyle1.NullValue = false; 当我创建DataGridViewCheckBoxColumn时,我发现没有为默认的单元格样式属性创建对象.因此,默认情况下NullValue属性采用false值.但是,在修改该属性后,已创建对象并为该属性分配字符串类型值. 更新:只需重新创建该列即可解决此问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |