gpt4 book ai didi

c# - 无法更改 datagridview winforms 中的图像

转载 作者:行者123 更新时间:2023-12-02 17:43:38 27 4
gpt4 key购买 nike

如果另一列中指定的路径存在,我需要更改该列的图像。

我有以下代码:

dataGridView1.DataSource = table;


DataGridViewButtonColumn buttonCol = new DataGridViewButtonColumn();
buttonCol.HeaderText = "";
buttonCol.Name = "BrowseButton";
buttonCol.Text = "...";
buttonCol.UseColumnTextForButtonValue = true;
dataGridView1.Columns.Add(buttonCol);

DataGridViewImageColumn imgCol = new DataGridViewImageColumn();
imgCol.HeaderText = "Status";
imgCol.Name = "StatusImage";
imgCol.Image = null;
dataGridView1.Columns.Add(imgCol);
dataGridView1.Columns["StatusImage"].DisplayIndex = 4;

foreach (DataGridViewRow myRow in dataGridView1.Rows)
{
string overRiddenDirPath = myRow.Cells["Overridden Dir"].Value.ToString();
string preConfiguredPath = myRow.Cells["PreConfigured Dir"].Value.ToString();
string path = overRiddenDirPath;
if (overRiddenDirPath == "")
{
path = preConfiguredPath;
}

DataGridViewImageCell cell = myRow.Cells["StatusImage"] as DataGridViewImageCell;

// If the directory doesn't exist
if (!Directory.Exists(path))
{
cell.Value = Image.FromFile(@"Chrysanthemum.jpg");
}
else
{
cell.Value = Image.FromFile(@"Jellyfish.jpg");
}
}

没有显示图像:图像的路径很好,因为如果我这样写:

  DataGridViewImageColumn imgCol = new DataGridViewImageColumn();
imgCol.HeaderText = "Status";
imgCol.Name = "StatusImage";
imgCol.Image = Image.FromFile(@"Chrysanthemum.jpg");
dataGridView1.Columns.Add(imgCol);
dataGridView1.Columns["StatusImage"].DisplayIndex = 4;

它会显示,但不会根据条件改变。

此外,是否有更好的方法将图像添加到 datagridview 单元格。

感谢任何帮助。谢谢

最佳答案

您可以将代码放入 CellFormatting 事件中。

void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (dataGridView1.Columns[e.ColumnIndex].Name == "StatusImage")
{
// Your code would go here - below is just the code I used to test
e.Value = Image.FromFile(@"C:\Pictures\TestImage.jpg");
}
}

需要注意的一件重要事情是您在此处设置 e.Value 而不是 cell.Value。

<小时/>

这是我尝试的示例中的代码,我在其中访问另一列的值以有条件地更改所选图像。无论图像具有哪个显示索引,这都可以完美地工作。

void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (!dataGridView1.Rows[e.RowIndex].IsNewRow)
{
if (dataGridView1.Columns[e.ColumnIndex].Name == "StatusImage")
{
if (((int)dataGridView1.Rows[e.RowIndex].Cells["ValueTwo"].Value) == 5)
{
e.Value = Image.FromFile(@"C:\Pictures\TestImage1.jpg");
}
else
{
e.Value = Image.FromFile(@"C:\Pictures\TestImage2.jpg");
}
}
}
}

在示例中,我有一列包含整数值,但它应该以类似的方式适用于文本。

关于c# - 无法更改 datagridview winforms 中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473310/

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