如何解决将图像显示到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;
}
}
}
}
问题改为显示图像,它将位图字符串抛出为:
我在做什么错?问候
更新
作为注释,我正在从数据库中添加它...所以我有一个模型列表,然后将其分配为数据源:
型号:
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");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。