我有一个 DataGridView 绑定到我想要添加 Avatar 列的 DataTable。该列是未绑定的。我正在使用以下代码来做到这一点:
if (MyIcons != null)
{
DataGridViewImageColumn imageColumn = new DataGridViewImageColumn();
imageColumn.Name = "Avatar";
imageColumn.HeaderText = "";
imageColumn.DefaultCellStyle.NullValue = null;
ViewRolesDataGrid.Columns.Insert(0, imageColumn);
foreach (DataGridViewRow row in ViewRolesDataGrid.Rows)
{
Guid iconGuid = (Guid)row.Cells["ID_Picture"].Value;
if (MyIcons.Icons32x32.ContainsKey(iconGuid))
{
Image bm = MyIcons.Icons32x32[iconGuid];
DataGridViewImageCell cell = row.Cells["Avatar"] as DataGridViewImageCell;
cell.Value = MyIcons.Icons32x32[iconGuid];
}
}
}
MyIcons 是一个包含字典集的类,这些字典将 ID_Picture guid 从数据库散列到先前获取和缓存的实际图像(因此每次执行查询并将图像数据发回时,我不必加入图像表)。我已验证 MyIcons 缓存已实例化,并且它包含图像。上面的图像“bm”包含一个 32x32 32 位图。
当我运行我的程序时,未绑定的图像列在视图中可见,但没有呈现图像。它的行为就好像该值为 null(DefaultCellStyle.NullValue 更改会产生影响)。如果我对图像表进行完全连接以创建在 DataTable 中与图像绑定的列,则会显示图像。
谁能发现我的错误?
谢谢。
编辑:如果我直接将位图分配给单元格,它甚至不起作用,即我仍然没有在该列中显示任何内容:
cell.Value = Bitmap.FromFile("picture_32x32.png");