Showing a bitmap in dataGridView using C#
I want to show in dataGridView some image. I have two components, dataGridView, dataTable and one Bitmap. DataTable has two columns.
dataGridview.source = dataTable;
Now, I want to show in dataGridView three columns, two from dataTable and new third with my bitmap. If it is easier, I can modify dataTable and dataGridVi开发者_C百科ew.
Is it possible to do?
There are several ways you can approach this.
There is an image column type for the DataGridView, the DataGridViewImageColumn, which has an image property that you can pass a bitmap to.
Something like the following should work:
private void createGraphicsColumn(Bitmap image)
{
DataGridViewImageColumn imageColumn = new DataGridViewImageColumn();
imageColumn.Image = image;
imageColumn.Name = "Tree";
imageColumn.HeaderText = "Nice tree";
dataGridView1.Columns.Insert(2, imageColumn);
}
You can also set the Value property of individual cells in this column if needed.
The example above plus a whole lot of other discussion can be found on MSDN.
Another option is to add your image into the datatable - this will automatically generate your image column, but the new column in the datatable needs to be of type byte array.
I found the following code to do this with a quick google:
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
If you do take this approach I'd suggest doing a little research to find the best method of creating the byte array - I couldn't vouch for that code being the best.
Simply create datatable with image column and add image to it
dtMain.Columns.Add("ImageColumn", typeof(Image));
dtMain.Rows.Add(Image.FromFile(photopath + "1.jpg"));
Download full code at http://tablegridview.blogspot.in
精彩评论