如何在c#中向datagridview行标题添加不同的图标/图像?

时间:2011-07-07 16:30:07

标签: c# winforms datagridview

我想动态地将不同的图像添加到c#windows form datagridview行标题中。它应该像检查任何单元格值一样,如果它> 10显示一些图像,否则显示其他图像。如何做到这一点?请帮帮我...........

3 个答案:

答案 0 :(得分:3)

将一个OnRowDataBound事件处理程序添加到GridView

在事件处理程序中 - 检查标题并相应地处理每一列

protected virtual void OnRowDataBound(GridViewRowEventArgs e) {
   if (e.Row.RowType == DataControlRowType.Header) {
       // process your header here..
    }
}

有关详细信息,请转到此处:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewroweventargs.row.aspx

答案 1 :(得分:2)

您可以在DataGridView.RowPostPaint事件中将图像添加到DataGridView行标题。

这是一篇关于CodeProject的文章的链接,似乎很好地描述了这一点(我没有尝试自己编写代码):Row Header Cell Images in DataGridView

您可以使用RowPostPaint事件提取要测试的值,以确定要显示的图标。通过使用事件的RowIndex属性以及您感兴趣的列的索引值来执行此操作。

这样的事情应该作为一个起点:

private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) {
    // As an example we'll check contents of column index 1 in our DGV.
    string numberString = dataGridView1.Rows[e.RowIndex].Cells[1].Value as string;
    if (numberString != null) {
        int number;
        if (Int32.TryParse(numberString, out number)) {
            if (number > 10) {
                // Display one icon.
            } else {
                // Display the other icon.
            }
        } else {
            // Do something because the string that is in the cell cannot be converted to an int.
        }
    } else {
        // Do something because the cell Value cannot be converted to a string.
    }
}

答案 2 :(得分:0)

我不确定如何添加图片......但是this link有一个很好的例子,可以在行标题中写入数字,因此您可以使用> 10条件更新它,以显示图像。