我有一个有趣的问题。我正在尝试使用数据表作为 datagridview 的数据源。我想对表格的某些单元格进行着色以指示各种事物,但由于某种原因,颜色不会显示。所以下面的代码显示了一个未着色的单元格。
dataGridView1.DataSource = table;
dataGridView1.Rows[0].Cells[0].Style.BackColor = Color.Yellow;
我只能在初始表单加载后显示颜色(例如在 OnClick 事件上设置单元格颜色)。但是,如果我按照下面的代码显式创建视图的行和列,则着色会起作用。
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;
我不想以这种方式获得代码。有谁知道这里发生了什么阻止我给细胞着色?
如果您尝试在表单的构造函数中设置单元格颜色,您将在数据绑定完成之前点击,这样单元格的更改就不会保留(不要问我为什么,这只是这些问题之一)DataGridView
.
对此最直接的解决方法是稍后设置颜色 - 通常在一个DataBindingComplete
事件处理程序:
void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.Rows[0].Cells[0].Style.BackColor = Color.Yellow;
}
这适用于网格的静态着色 - 如果您希望颜色根据网格内的变化而变化,则使用CellFormatting
更改单元格的事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)