您的位置:首页 > 编程语言 > C#

C#如何在DataGridView的RowHeader显示字符串和图标

2008-06-04 10:56 274 查看
【资料收集自网络】

在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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐