将图像显示到DataGridView中,以显示位图字符串代替图像

问题描述

我有一个DataGridView,我想使用一列来显示图像列表中的图像,所以我在CellFormattingEvent上进行了操作

代码:

private void dgvUpload_CellFormatting(object sender,DataGridViewCellFormattingEventArgs e)
{
    foreach (DataGridViewRow row in dgvUpload.Rows)
    {
        var backColor = row.Cells["BackgroundColor"].Value.ToString();

        if (!string.IsNullOrEmpty(backColor))
        {

            switch (backColor)
            {
                case "#52451C":
                    row.Cells["BackgroundColor"].Value = imageList1.Images[0];
                    break;
                case "#0F4C1D":
                    row.Cells["BackgroundColor"].Value = imageList1.Images[1];
                    break;
                case "#8E1A1C":
                    row.Cells["BackgroundColor"].Value = imageList1.Images[2];
                    break;

            }
        }
    }
}

问题改为显示图像,它将位图字符串抛出为:

enter image description here

我在做什么错?问候

更新

作为注释,我正在从数据库中添加它...所以我有一个模型列表,然后将其分配为数据源:

型号:

 public class MessageModel
    {
        public string Tab { get; set; }
        public string Message { get; set; }
        public bool Uploaded { get; set; }
        public string BackgroundColor { get; set; }
    }

ModelList:

   public List<MessageModel> MessageList { get; set; } = new List<MessageModel>();

然后我将其分配给数据源,如下:

   dgvUpload.DataSource = null;
   dgvUpload.DataSource = superTemplateLogic.MessageList;

更新2

在下面的最后一条评论中,我更改了代码。首先,我删除CellFomratting事件并尝试创建新的图像列,然后根据消息分配值,现在BackgroundColor返回3个值“成功,警告和失败”

因此,根据每一个图像,我将图像分配到该新列,最后删除BackgroundColor列:

 var messageList = superTemplateLogic.MessageList.ToDataTable();
            dgvUpload.DataSource = null;
            dgvUpload.DataSource = messageList;

            DataGridViewImageColumn imageCol = new DataGridViewImageColumn();
            imageCol.Name = "Status";
            imageCol.DisplayIndex = dgvUpload.Columns["BackgroundColor"].DisplayIndex + 1;

            dgvUpload.Columns.Add(imageCol);


            for (int index = 0; index < messageList.Rows.Count; index++)
            {
                var currentStatus = messageList.Rows[index]["BackgroundColor"];
                var image = imageList1.Images[0];

                switch (currentStatus)
                {
                    case "success":
                        image = imageList1.Images[0];
                        break;
                    case "warning":
                        image = imageList1.Images[1];
                        break;
                    case "fail":
                        image = imageList1.Images[1];
                        break;
                }


                dgvUpload.Rows[index].Cells["Status"].Value =  image;
            }
        messageList.Columns.Remove("BackgroundColor");

现在我有一列没有图像,它只显示“ x”:

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...