图像从资源加载时在DataGridView中显示红色“X”

我试图从我的项目的资源添加一个图像列到一个新创建的DataGridView这是代码:

DataGridViewImageColumn myImage = new DataGridViewImageColumn(); myImage.Image = Properties.Resources.bullet_arrow_down; myImage.ImageLayout = DataGridViewImageCellLayout.Zoom; myImage.Name = "Remove"; DirectoryGrid.Columns.Add(myImage); 

但是当我运行代码时,我得到默认的“X”图像,而不是我选择的图像。 图像是否超大?(它是32×32 ico)我必须添加一些位转换吗?

大多数代码在线想要你从文件加载图像,但我认为这是凌乱的。但如果我必须这样做。但我发现一些引用,表明这个代码应该工作正常。

请注意,此图像用于另一个按钮,其工作正常。 我也尝试过其他图像。

您拥有的将用于通过DataGridView.DataSource添加的行。 但是,正如您所见, NewRow仍显示红色x 。 这可以如此处所示解决。 但是,一旦您编辑了NewRow的单元格并添加了另一个单元格,编辑行就不再具有您的图像,而是返回到红色x

处理DataGridView.RowsAdded而不是处理CellFormatting事件:

 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;