我只是在学习如何DataGridView
在虚拟模式下使用控件。我正在使用一个列表数组来存储可能很小或很大的文本文件的内容。DataGridView
需要根据该单元格中的文本内容更改单元格的背景颜色的一列。所以,我有一个事件处理程序:
private void datagridview_CellValueNeeded(
object sender, DataGridViewCellValueEventArgs e)
填充的每一行DataGridView
。我的问题是我不知道在哪里插入代码来设置背景色,因为在每一行中都创建了单元格(现在处于虚拟模式下)。
我尝试使用事件处理程序CellValueNeeded
来首先检查特定的列ID,然后按如下所示设置单元格背景色:
datagridview[e.ColumnIndex, e.RowIndex].Style.SelectionBackColor =
component_color;
其中component_color
被预定。但是,这种方法并没有改变颜色。我也试过处理其他事件,例如CellEnter
,CellLeave
,CellValueChanged
,RowsAdded
和RowLeave
。但是,从调试工作中我了解到,这些事件永远不会触发,也不会在CellValueNeeded
事件触发之前触发。
因此,是否可以通过处理CellValueNeeded
事件来设置在特定列中创建的单元格的背景色?还是应该通过处理其他事件来完成此任务?
您需要处理DataGridView.CellFormatting
事件。例如:
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 3 && e.Value == targetValue)
e.CellStyle.BackColor = Color.Red;
else
e.CellStyle.BackColor = SystemColors.Window;
}
干杯
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句