在我对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;
}
}
当我使用代码时,我得到了这个:
当我没有数据绑定并只加载图像列时,一切正常:
这可能是因为dgv中存在问题。因为我检查时列编号搞砸了:
我只需要在图像列中显示图像。
答案 0 :(得分:0)
原来这是MDI表单和Dgv的问题:
使用此代码并且有效:
private void dgvDocuments_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (dgvDocuments.ColumnCount < 5)
{
InsertDocumentColumn();
}
}