如何在DataGridViewImageColumn上显示文本

时间:2014-09-30 11:55:25

标签: c# winforms datagridview datagridviewimagecolumn

在我们的应用程序中,我们使用datagridview控件来显示一些数据。 在gridview中,一列是DataGridViewImageColumn。

在CellFormatting事件中,我们设置了一些图像,如

e.CellStyle.BackColor = Color.Red;
e.Value = Properties.Resources.Triangle

其中Triangle是位图资源,图像是透明的。当我们将颜色设置为红色时,图像的透明部分将显示颜色并且工作正常。

现在我们必须在图像上显示一些文字。 那么有没有办法在DataGridViewImageColumn中显示的透明图像上显示文本。?

1 个答案:

答案 0 :(得分:2)

无需弄乱图像。

相反,你可以自己控制细胞的绘画,也许是这样:

private void dataGridView1_CellPainting(object sender,
                                        DataGridViewCellPaintingEventArgs e)
{
   if (e.ColumnIndex == yourImageColumnIndex)
   {
     e.PaintBackground(e.ClipBounds, true);
     e.PaintContent(e.ClipBounds);
     e.Graphics.DrawString(yourText, dataGridView1.Font, Brushes.Yellow,
                                     e.CellBounds.X, e.CellBounds.Y);
     e.Handled = true;  
   }
}

如您所见,大部分工作都是由系统完成的;你只需要添加一行来绘制文字。你肯定会想要使用不同的字体,当然也可以改变所有其他的参数。请留在e.CellBounds矩形内。

您可能希望查看event's aguments ..

中丰富的数据集

如果您的文字取决于该行,您可以使用e.RowIndex参数获取正确的文字以显示每个单元格。