在DataGridView的CellPainting事件中,加入如下代码
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex == -1) { Rectangle newRect = new Rectangle(e.CellBounds.X, e.CellBounds.Y, e.CellBounds.Height, e.CellBounds.Height); //新建一个图标 System.Drawing.Icon ico = new Icon("F:\\xx.ico"); using (Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor), backColorBrush = new SolidBrush(e.CellStyle.BackColor)) { using (Pen gridLinePen = new Pen(gridBrush,2)) { // Erase the cell. e.Graphics.FillRectangle(backColorBrush, e.CellBounds); //划线 Point p1 = new Point(e.CellBounds.Left+e.CellBounds.Width, e.CellBounds.Top); Point p2 = new Point(e.CellBounds.Left+e.CellBounds.Width, e.CellBounds.Top+e.CellBounds.Height); Point p3 = new Point(e.CellBounds.Left,e.CellBounds.Top+ e.CellBounds.Height); Point[] ps = new Point[]{p1,p2,p3}; e.Graphics.DrawLines(gridLinePen,ps); //画图标 e.Graphics.DrawIcon(ico, newRect); //画字符串 e.Graphics.DrawString("123", e.CellStyle.Font, Brushes.Crimson, e.CellBounds.Left + 20, e.CellBounds.Top, StringFormat.GenericDefault); e.Handled = true; } } } }
例外还有其他方法供参考,也是在DataGridView的CellPainting事件中
//”A”显示在-1(即RowHeader)列之上 if (e.RowIndex >= 0 && e.ColumnIndex == 0) { e.Graphics.DrawString("A", this.dataGridView1.Font, Brushes.Red, 20, e.CellBounds.Top + 5); } //”A”则被-1(即RowHeader)列覆盖。 if (e.RowIndex >= 0 && e.ColumnIndex == -1) { e.Graphics.DrawString("A", this.dataGridView1.Font, Brushes.Red, 20, e.CellBounds.Top + 5); } //XX图片在-1(即RowHeader)列之上 if (e.RowIndex >= 0 && e.ColumnIndex == 0) { Image img = Image.FromFile(@"F:\xx.bmp"); e.Graphics.DrawImage(img, 0, e.CellBounds.Top); } //XX图片被-1(即RowHeader)列覆盖 if (e.RowIndex >= 0 && e.ColumnIndex == -1) { Image img = Image.FromFile(@"F:\xx.bmp"); e.Graphics.DrawImage(img, 0, e.CellBounds.Top); } //XX图片被-1(即RowHeader)列覆盖 if (e.RowIndex >= 0 && e.ColumnIndex == -1) { Image img = Image.FromFile(@"F:\xx.bmp"); e.Graphics.DrawImage(img, e.CellBounds.Left, e.CellBounds.Top); } //XX图片被0列覆盖 if (e.RowIndex >= 0 && e.ColumnIndex == 0) { Image img = Image.FromFile(@"F:\xx.bmp"); e.Graphics.DrawImage(img, e.CellBounds.Left, e.CellBounds.Top);