我正在尝试将我的项目资源中的图像列添加到新创建的 DataGridView
这是代码:
DataGridViewImageColumn myImage = new DataGridViewImageColumn();
myImage.Image = Properties.Resources.bullet_arrow_down;
myImage.ImageLayout = DataGridViewImageCellLayout.Zoom;
myImage.Name = "Remove";
DirectoryGrid.Columns.Add(myImage);
但是当我运行代码时,我得到默认的“X”图像,而不是我选择的图像。
图片尺寸是否过大?(32x32 ico)
我必须添加一些位转换吗?
大多数在线代码希望您从文件加载图像,但我认为这很混乱。但如果我必须这样做。但我发现一些参考资料表明这段代码应该可以正常工作。
请注意,该图像用于另一个按钮,并且工作正常。
我也尝试过其他图像。
您所拥有的将适用于通过添加的行DataGridView.DataSource
。然而,正如您所看到的,NewRow
仍然显示红色x
。如图所示可以解决这个问题here https://stackoverflow.com/a/26124522/3773066。但是,一旦您编辑了单元格NewRow
又添加了一个,编辑行不再有你的图片,而是又回到了红色x
.
Solution
而不是处理CellFormatting
事件、句柄DataGridView.RowsAdded
:
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
if (this.dataGridView1.Columns.Contains("ImageColumnName"))
{
this.dataGridView1.Rows[e.RowIndex].Cells["ImageColumnName"].Value = Properties.Resources.MySavedImage;
}
}
但是,这不会捕获第一个NewRow
添加是因为它是在第一列添加到DataGridView
。所以除非第一列is您的图像列,您还需要执行以下操作:
this.dataGridView1.Columns.Add(myImageColumn);
this.dataGridView1.Rows[this.dataGridView1.NewRowIndex].Cells["ImageColumnName"].Value = Properties.Resources.MySavedImage;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)