相反的CellFormatting
,尝试CellValueChanged
对于非绑定数据或DataBindingComplete
一个绑定的数据集。例如,假设你是“删除/取消删除”使用下面的Button.Click
事件中的一行:
private void Button1_Click(object sender, EventArgs e)
{
bool value = (bool)dataGridView1.CurrentRow.Cells["Deleted"].Value;
dataGridView1.CurrentRow.Cells["Deleted"].Value = !value;
// For bound data (like a DataTable) add the following line:
// ((DataTable)dataGridView1.DataSource).AcceptChanges();
}
绑定数据
更改行以这种方式“删除”的列值将触发以下事件处理器。因此,您可以用颜色的基础上True
或False
该列的值的行:
private void DataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == dataGridView1.Columns["Deleted"].Index)
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.ForeColor = (bool)dataGridView1[e.ColumnIndex, e.RowIndex].Value ? Color.Red : Color.Black;
}
}
数据绑定
对于绑定数据,比如从DataTable
,处理DataBindingComplete
事件就足够了。此事件将在绑定第一次设置以及更改后触发 - 例如Button1.Click
事件的更改。在这里,您将遍历行并根据隐藏列的值设置所需的样式。 (注意在Button1_Click
事件处理程序的附加变化对于具有DataTable
源网格这是需要给立即风格上的变化 - 否则它不会发生,直到您导航到不同的行)
private void DataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.DefaultSCellStyle.ForeColor = (bool)row.Cells["Deleted"].Value ? Color.Red : Color.Black;
}
}
请发布一个MCVE。预期结果的图片也会有所帮助 – ASh