Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to bind Image in Grid View on Windows Forms?

I bind image to GridView from Resource folder.When I load that Form image will be bind.But When call that form from MDIPARENT form Image will not be showed.I attach image and Code below.

Bind Image in Grid

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;       
 }

Call Child from MDIParent

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

Screenshots

Loading from MDI parent: screenshot of loading a page from MDI parent Loading directly: screenshot of loading a page directly

like image 929
Praveen S Avatar asked Dec 03 '14 05:12

Praveen S


People also ask

How do I display an image in Windows Forms?

To display a picture at design timeIn the Properties window, select the Image property, then select the ellipsis button to display the Open dialog box. If you're looking for a specific file type (for example, . gif files), select it in the Files of type box. Select the file you want to display.


2 Answers

When the image is bound in the form load event handler, in case of MDIChild the value of the DataGridViewImageCell is again reset to null by the time form is shown and you don't see any image. When its not MDChild then the cell value is retained and you see the image. I am not clear why the reset is happening in case of MDIChild.

Subscribe to the form's Shown event and move your image binding code to that event handler. It works in both normal and MDIchild use cases.

like image 187
Junaith Avatar answered Nov 07 '22 12:11

Junaith


Try this, Use your project Namespace, when retrieving the image from Resource Folder.

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;       
 }
like image 27
Manu Nair Avatar answered Nov 07 '22 12:11

Manu Nair