Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在运行时转换DataGridView单元格类型_C#_Winforms_Datagridview - Fatal编程技术网

C# 在运行时转换DataGridView单元格类型

C# 在运行时转换DataGridView单元格类型,c#,winforms,datagridview,C#,Winforms,Datagridview,My datagridview有一个复选框列,该列仅对它显示的数据中的某些记录有效。对于复选框无效的记录,我不希望显示任何内容,例如空白文本框 因此,我需要在运行时将单元格类型从复选框单元格动态更改为文本框单元格。我不能简单地更改列数据类型,因为该列需要混合使用textbox和checkbox单元格类型 到目前为止,我有下面的代码 this.deviceList1.DeviceGrid[colIndex, rowIndex] = new KryptonDataGridViewTextBoxCe

My datagridview有一个复选框列,该列仅对它显示的数据中的某些记录有效。对于复选框无效的记录,我不希望显示任何内容,例如空白文本框

因此,我需要在运行时将单元格类型从复选框单元格动态更改为文本框单元格。我不能简单地更改列数据类型,因为该列需要混合使用textbox和checkbox单元格类型

到目前为止,我有下面的代码

 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=“”;