DataGridViewImageColumn вызывает исключение при назначении значения ячейки
Имейте форму C# с DataGridView с первым столбцом, являющимся DataGridViewImageColumn. В конструкторе формы добавьте строки в DataGridView, причем первым аргументом будет объект Bitmap, считанный из файла. 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, как указано выше. Любопытно, что это работает без исключения в конструкторе, но работает с исключением в обратном вызове. Как устранить исключение?