问题描述
我有一个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 (将#修改为@)