gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:54:09 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com