C# 在运行时转换DataGridView单元格类型
My datagridview有一个复选框列,该列仅对它显示的数据中的某些记录有效。对于复选框无效的记录,我不希望显示任何内容,例如空白文本框 因此,我需要在运行时将单元格类型从复选框单元格动态更改为文本框单元格。我不能简单地更改列数据类型,因为该列需要混合使用textbox和checkbox单元格类型 到目前为止,我有下面的代码C# 在运行时转换DataGridView单元格类型,c#,winforms,datagridview,C#,Winforms,Datagridview,My datagridview有一个复选框列,该列仅对它显示的数据中的某些记录有效。对于复选框无效的记录,我不希望显示任何内容,例如空白文本框 因此,我需要在运行时将单元格类型从复选框单元格动态更改为文本框单元格。我不能简单地更改列数据类型,因为该列需要混合使用textbox和checkbox单元格类型 到目前为止,我有下面的代码 this.deviceList1.DeviceGrid[colIndex, rowIndex] = new KryptonDataGridViewTextBoxCe
this.deviceList1.DeviceGrid[colIndex, rowIndex] = new KryptonDataGridViewTextBoxCell()
this.deviceList1.DeviceGrid[colIndex, rowIndex].ReadOnly = true;
但这会产生DataGridView数据错误:
System.FormatException:已格式化
单元格的值具有错误的类型
您可以对相关单元格使用OnPaint事件处理程序,并在控件上绘制一个空白正方形。它有点黑,我相信还有其他的选择,但它是有效的。对它进行了排序。真的很简单。解决方案是确保Value属性具有适当的值。也就是说,它需要设置为字符串值
this.deviceList1.DeviceGrid[colIndex, rowIndex] = new KryptonDataGridViewTextBoxCell()
this.deviceList1.DeviceGrid[colIndex, rowIndex].ReadOnly = true;
this.deviceList1.DeviceGrid[colIndex, rowIndex].Value = "";
啊,解决办法是确保Value属性被赋予适当的值。也就是说,它需要设置为字符串值。this.deviceList1.DeviceGrid[colIndex,rowIndex].Value=“”;