Как связать изображение в представлении сетки в Windows Forms?

Я привязываю изображение к GridView из папки ресурсов. Когда я загружаю это изображение формы, оно будет привязано. Но при вызове этой формы из формы 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

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

Скриншоты

Загрузка из родительского MDI: скриншот загрузки страницы из родительского MDIЗагрузка напрямую: скриншот прямой загрузки страницы


person Praveen S    schedule 03.12.2014    source источник
comment
В каком методе у вас есть Bind Image in Grid code?   -  person Denis Palnitsky    schedule 16.12.2014


Ответы (2)


Когда изображение привязано к обработчику событий загрузки формы, в случае MDIChild значение DataGridViewImageCell снова сбрасывается до нуля к моменту отображения формы, и вы не видите никакого изображения. Когда это не MDChild, значение ячейки сохраняется, и вы видите изображение. Мне непонятно, почему происходит сброс в случае MDIChild.

Подпишитесь на событие формы Shown и переместите код привязки изображения в обработчик этого события. Он работает как в обычном, так и в MDIchild случаях использования.

person Junaith    schedule 11.12.2014
comment
@PraveenS - если это решило вашу проблему, не могли бы вы пометить это как ответ - person Junaith; 17.12.2014

Попробуйте это, используйте пространство имен вашего проекта при извлечении изображения из папки ресурсов.

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;       
 }
person Manu Nair    schedule 03.12.2014
comment
Для меня нет проблем, когда я делаю то же самое, что и ты, в любом случае - person Manu Nair; 03.12.2014
comment
да .. вот почему я упомянул в любом случае .. Никаких проблем ни в одном случае - person Manu Nair; 03.12.2014