DataGridView中的图像问题

时间:2011-07-31 22:00:44

标签: c# .net winforms image datagridview

早上好,

我想在DataGridView中显示图像(16 * 16px png文件)。此网格有3列:文本单元格,文本单元格,图像单元格。 这是示例,我如何尝试设置图像:

    private void showData(List<Item> collection)
    {
        gwQuestions.AutoGenerateColumns = false;
        gwQuestions.DataSource = addNotSet(collection);

        foreach (DataGridViewRow row in gwQuestions.Rows)
        {
            DataGridViewImageCell cell = row.Cells[2] as DataGridViewImageCell;
            cell.ValueType = typeof(System.Drawing.Image);
            if (collection[row.Index].Result)
            {
                cell.Value = (System.Drawing.Image)Properties.Resources.Check;
            }
            else
            {
                cell.Value = (System.Drawing.Image)Properties.Resources.Cancel;
            }
        }
    }

但是在网格中我只在纸上显示红十字,比如找不到文件错误。 你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

如果您将逻辑分配给DataGridView的CellFormatting事件中的图像,这应该有效:

dataGridView1.CellFormatting += dataGridView1_CellFormatting;

void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{            
    if (dataGridView1.Columns[e.ColumnIndex].Name == "ImageColumnName")
    {
        if (collection[e.RowIndex].Result)
        {
            e.Value = (System.Drawing.Image)Properties.Resources.Check;
        }
        else
        {
            e.Value = (System.Drawing.Image)Properties.Resources.Cancel;
        }
    }
}

另请注意,您在此设置e.Value而不是cell.Value。

答案 1 :(得分:0)

Salvete!我正在寻找类似的答案。如果你不介意我的vb,试试这个帖子(我自己回答了......)。该代码显示了如何将资源中的图像加载到datagridview.

How to dynamically swap a string for an image in Datagridview?