gpt4 book ai didi

c# - 使用数据源时无法更改 datagridview 单元格颜色

转载 作者:太空狗 更新时间:2023-10-29 18:04:42 26 4
gpt4 key购买 nike

我有一个有趣的问题。我正在尝试使用数据表作为数据 GridView 的数据源。我想为表格的一些单元格着色以指示各种事物,但由于某种原因,颜色不会显示。所以下面的代码显示了一个未着色的单元格。

dataGridView1.DataSource = table;

dataGridView1.Rows[0].Cells[0].Style.BackColor = Color.Yellow;

我只能在初始表单加载后显示颜色(例如,在 OnClick 事件上设置单元格颜色)。但是,如果我像下面的代码一样显式地为 View 创建行和列,着色就会起作用。

foreach (DataColumn col in table.Columns)
dataGridView1.Columns.Add(col.ColumnName, col.ColumnName);

for (int i = 0; i < table.Rows.Count; i++)
{
var row = table.Rows[i];
object[] values = new object[table.Columns.Count];
for (int x = 0; x < table.Columns.Count; x++)
values[x] = row[x].ToString();

dataGridView1.Rows.Add(values);
}

dataGridView1.Rows[0].Cells[0].Style.BackColor = Color.Yellow;

我不想以这种方式拥有代码。有谁知道这里发生了什么阻止我给细胞着色?

最佳答案

如果您尝试在表单的构造函数中设置单元格颜色,您将在数据绑定(bind)完成之前点击,这样对单元格的更改就不会保留(不要问我为什么,这只是其中一个陷阱使用 DataGridView

对此最直接的解决方法是稍后设置颜色 - 通常在 DataBindingComplete 事件处理程序中:

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.Rows[0].Cells[0].Style.BackColor = Color.Yellow;
}

这适用于网格的静态着色 - 如果您希望颜色根据网格内的变化而变化,则使用 CellFormatting 事件来更改单元格。

关于c# - 使用数据源时无法更改 datagridview 单元格颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12515960/

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