Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C#

Row Header Cell Images in DataGridView

4.55/5 (10 votes)
24 May 2011CPOL 54.9K   1.9K  
This post helps to load image in row header cell of a datagridview.

Introduction

This post helps to load image in row header cell of a datagridview. As per my investigation, it is found that we cannot directly load an image into a row header cell (this can be false though). But I figured out a way to load an image in row header cell by converting the image into an icon – then show it using the event dataGridView1_RowPostPaint (and I’m not sure whether this is the best way).

RowHeaderCellImages/Image_1.png

I have added the ’RedCross’ image in an imageList in my project. If we try to resize the image to a larger extent, the quality of image will be deformed. Try to load images in the image list with the exact size; we prefer to show it in the row header cell.

C#
private void dataGridView1_RowPostPaint
	(object sender, DataGridViewRowPostPaintEventArgs e)
{
    //Convert the image to icon, in order to load it in the row header column
    Bitmap myBitmap = new Bitmap(imageList1.Images[0]);
    Icon myIcon = Icon.FromHandle(myBitmap.GetHicon());

    Graphics graphics = e.Graphics;

    //Set Image dimension - User's choice
    int iconHeight = 14;
    int iconWidth = 14;

    //Set x/y position - As the center of the RowHeaderCell
    int xPosition = e.RowBounds.X + (dataGridView1.RowHeadersWidth / 2);
    int yPosition = e.RowBounds.Y + 
	((dataGridView1.Rows[e.RowIndex].Height - iconHeight) / 2);

    Rectangle rectangle = new Rectangle(xPosition, yPosition, iconWidth, iconHeight);
    graphics.DrawIcon(myIcon, rectangle);
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)