有没有办法随时更改某些DataGridViewCell.Style.BackColor(&etc)?



文档说明它必须在someDataGridView中完成。CellFormatting事件,但是如何将所需的颜色信息传递给它并在需要时强制触发CellFormatting呢?

someDataGridViewCell。从System.Windows.Forms.Timer Tick事件更改单元格文本的值工作得很好,但我似乎无法同时更改颜色。在我的例子中,所有的列都是从用户菜单中动态构建和更改的,并且可以有几十个列。

这是VS2015。

更新:我的问题是我使用Color.FromName(),它返回空(透明)拼写错误的名字-非常非常糟糕的网格背景颜色。(我需要在我使用的数据流中着色,所以名字看起来很方便。)

在大多数示例中使用的CellFormatting事件假设您可以从可见单元格内容中获得颜色信息,这太限制了。

如果要在表单的Load事件上更改数据视图的颜色,建议使用CellFormatting事件。一旦表单被Shown,你可以用任何方法修改单元格。

你将如何做到这一点取决于你如何遍历视图和你想要完成什么。既然你没有指定VB或c#,我就把它们都放进去。

单细胞:

VB:
dgv.Rows(index).Cells(index).Style.BackColor = Color.PickAColor
C#:
dgv.Rows[index].Cells[index].Style.BackColor = Color.PickAColor;

整个行:

VB:
dgv.Rows(index).DefaultCellStyle.BackColor = Color.PickAColor
C#:
dgv.Rows[index].DefaultCellStyle.BackColor = Color.PickAColor;

整个行:

VB:
For Each row As DataGridViewRow in dgv.Rows
row.DefaultCellStyle.BackColor = Color.PickAColor
Next
C#:
foreach(DataGridViewRow row in dgv.Rows)
{
row.DefaultCellStyle.BackColor = Color.PickAColor;
}

基本上,如果你对单个单元格进行样式设置,请使用Cell.Style.BackColor,如果你想对整个行进行样式设置,请使用Row.DefaultCellStyle.BackColor

最新更新