【问题标题】:DataGridViewImageColumn triggers exception when assigning cell ValueDataGridViewImageColumn 在分配单元格值时触发异常
【发布时间】:2018-01-16 18:41:04
【问题描述】:

具有带有 DataGridView 的 C# 表单,第一列是 DataGridViewImageColumn。在表单构造函数中,将行添加到 DataGridView,第一个参数是从文件中读取的位图对象。 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 单元格值。奇怪的是,它在构造函数中没有异常运行,但在回调中异常运行。 如何消除异常?

【问题讨论】:

  • 你遇到了什么异常?
  • 我设置捕获 ThreadExceptionEventHandler,它捕获了我上面显示的消息。
  • dataGridView_xxx.Rows[nnn].Cells[0].Value 的类型是字符串?
  • 抱歉,xxx.Value 的类型如何设置为字符串或任何特定对象?在构造函数中为 Bitmap 赋值是成功的,没有异常,但是在鼠标回调中为 Bitmap 赋值是成功的,但有异常。框架是如何决定 Value 从 Bitmap 翻转到 string 的?
  • 在每次赋值之前插入 dataGridView_xxx...Value.GetType() 并始终返回 System.Drawing.Bitmap。尽管目标对象的 GetType 另有说明,但框架中似乎有些东西认为鼠标回调分配以某种方式分配给 System.String。

标签: c# datagridview datagridviewimagecolumn


【解决方案1】:

问题解决了。请参阅上面我的最终评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    相关资源
    最近更新 更多