c# - 从资源加载时在 DataGridView 中显示红色 "X"的图像

标签 c# image datagridview

我正在尝试将图像列从我的项目的资源添加到新创建的 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/

相关文章:

android - 在 viewflipper 中缩放图像

c# - Windows DataGridView _RowCommand

c# - 为什么 Logging 不使用字符串插值

c# - 在 C# 中查看生成的源代码(在 AJAX/JavaScript 之后)

c# - 强制终止进程

c# - 如何设置事件Datagridviewcombobox cell selectionchanged?

c# - 如何从wpf中的datagridview更新多个基于表

c# - 表达混合彩色区域

javascript - 在 Node.JS 中将文本/字符串转换为图像的最佳方式

image - 为什么 pdf 中有些图像会被裁剪?