在C#中数据绑定DataGridView后无法将图像添加到新图像列

时间:2018-04-24 06:17:52

标签: c# image datagridview datagridviewimagecolumn

在我对DataGridView进行数据绑定后,我无法设置图像列单元格的图像。

如果我在没有数据绑定dgv的情况下添加图像列和图像,一切正常。

这是我的代码:

public void LoadDgvDocuments()
{
    var select = "SELECT RegistryTypeId, RegistryTypeDescription FROM RegistryType";
    SqlConnection c = SqlDbConnection.GetConnection();
    var dataAdapter = new SqlDataAdapter(select, c);
    var commandBuilder = new SqlCommandBuilder(dataAdapter);
    var ds = new DataSet();
    dataAdapter.Fill(ds);
    dgvDocuments.ReadOnly = true;
    dgvDocuments.DataSource = ds.Tables[0];
    dgvDocuments.Columns[0].Width = 100;
    dgvDocuments.Columns[1].Width = 250;
    AddDeleteIconColumns();
    dgvDocuments.Columns[2].Width = 50;
}

public void AddDeleteIconColumns()
{
    DataGridViewImageColumn ic = new DataGridViewImageColumn();
    ic.HeaderText = "Img";
    ic.Image = null;
    ic.Name = "cImg";
    ic.Width = 100;
    dgvDocuments.Columns.Add(ic);
    foreach (DataGridViewRow row in dgvDocuments.Rows)
    {
        DataGridViewImageCell cell = row.Cells[2] as DataGridViewImageCell;
        cell.Value = (System.Drawing.Image)Properties.Resources.Icon_delete;
    }
}

当我使用代码时,我得到了这个:

not working

当我没有数据绑定并只加载图像列时,一切正常:

working

这可能是因为dgv中存在问题。因为我检查时列编号搞砸了:

messed up column numbering

我只需要在图像列中显示图像。

1 个答案:

答案 0 :(得分:0)

原来这是MDI表单和Dgv的问题:

view article describing issue

使用此代码并且有效:

  private void dgvDocuments_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {  
        if (dgvDocuments.ColumnCount < 5)
        {
            InsertDocumentColumn();
        }
    }