具有 C# 表单与 DataGridView,第一列是 DataGridViewImageColumn。在窗体构造函数中,将行添加到 DataGridView,第一个参数是从文件中读取的位图对象。数据网格视图显示正确,没有问题。
Bitmap blackCamera = null;
Bitmap grayCamera = null;
public FormConstructor()
{
...
blackCamera = new Bitmap(@"BlackCamera.bmp");
grayCamera = new Bitmap(@"GrayCamera.bmp");
...
int row = dataGridView_xxx.Rows.Add(blackCamera); // works fine
...
dataGridView_xxx.Rows[n].Cells[0].Value = grayCamera; // works fine
...
}
稍后,想要更改某些行的第一列单元格的图像。在鼠标函数的回调中,如果尝试分配 DataGridViewImageColumn 单元格值,我会收到异常"无法将 System.Drawing.Bitmap 类型的对象转换为 System.String 类型",但图像确实更改为所需的新位图。例如:
private void MouseCallback(Object sender, EventArgs e)
{
...
dataGridView_xxx.Rows[nnn].Cells[0].Value = blackCamera; // changes image color but triggers exception
...
}
Microsoft文档似乎支持如上所述分配 DataGridViewImageColumn 单元格值。奇怪的是,它在构造函数中无异常地工作,但在回调中却异常工作。如何消除异常?
问题解决了。请参阅我上面的最后评论。