我正在尝试将图像列从我的项目的资源添加到新创建的 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 .但是,一旦您编辑了 NewRow
的一个单元格并添加了另一个单元格,编辑行将不再有您的图像,而是变回红色的 x
。
解决方案
不处理 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
后添加的。因此,除非第一列是您的图像列,否则您还需要执行以下操作:
this.dataGridView1.Columns.Add(myImageColumn);
this.dataGridView1.Rows[this.dataGridView1.NewRowIndex].Cells["ImageColumnName"].Value = Properties.Resources.MySavedImage;
关于c# - 从资源加载时在 DataGridView 中显示红色 "X"的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30802160/