如何在Windows窗体的网格视图中绑定图像?

时间:2014-12-03 05:52:02

标签: c# datagridview mdichild mdiparent

我将图像绑定到资源文件夹中的GridView。当我加载表单时,图像将是bind.But当从MDIPARENT表单调用该表单时,图片将不会显示。我在下面附加图片和代码。

在网格中绑定图像

DataGridViewImageColumn ic = new DataGridViewImageColumn();
 ic.HeaderText = "Payment";
 ic.Image = null;
 ic.Name = "cImg";
 ic.Width = 50;
 dtGrCustBal.Columns.Add(ic);
 foreach (DataGridViewRow row in dtGrCustBal.Rows)
 {
      DataGridViewImageCell cell = row.Cells[10] as DataGridViewImageCell;
      cell.Value = Properties.Resources.icon_payment_cash_small;       
 }

从MDIParent调用Child

 CustomerBalance ChildCustBal = new CustomerBalance();
 ChildCustBal.MdiParent = this;
 ChildCustBal.Show();

截图

从MDI父级加载: screenshot of loading a page from MDI parent 直接加载: screenshot of loading a page directly

2 个答案:

答案 0 :(得分:3)

当图像在表单加载事件处理程序中绑定时,如果MDIChild DataGridViewImageCell的值再次显示为null,则显示时间表并且您不需要看到任何图像。当它不是MDChild时,则保留单元格值并且您看到图像。我不清楚为什么在MDIChild的情况下发生了重置。

订阅表单的Shown事件,并将图像绑定代码移动到该事件处理程序。它适用于普通和MDIchild用例。

答案 1 :(得分:2)

在从资源文件夹中检索图像时,请尝试使用项目命名空间。

DataGridViewImageColumn ic = new DataGridViewImageColumn();
ic.HeaderText = "Payment";
ic.Image = null;
ic.Name = "cImg";
ic.Width = 50;
dtGrCustBal.Columns.Add(ic);
foreach (DataGridViewRow row in dtGrCustBal.Rows)
 {
  DataGridViewImageCell cell = row.Cells[10] as DataGridViewImageCell;
  cell.Value ="your namespace".Properties.Resources.icon_payment_cash_small;       
 }