首页 > 解决方案 > C# 数据网格视图。尽管 DefaultCellStyle 的单元格背景色是空的

问题描述

我通过将datagridview中的单元格背景颜色设置为黄色

`grid.DefaultCellStyle.BackColor = Color.Yellow;`

我看到黄色单元格,但单元格的背面颜色属性不应该也是黄色吗?我得到一个“颜色[空]”而不是黄色。如果我尝试以下代码,为什么颜色不是黄色? grid.CellClick += new DataGridViewCellEventHandler( (eventsource, cellevent) => { int rowIndex = cellevent.RowIndex; int colIndex = cellevent.ColumnIndex; MessageBox.Show(" color: "+ grid.Rows[rowIndex].Cells[colIndex].Style.BackColor); });

标签: c#winformsdatagridviewcolorsbackground

解决方案


单元格的背面颜色属性不应该也是黄色吗?

不,不应该。

请注意,您可以将每个单元格BackColor单独设置为默认颜色的其他颜色。当它被设置时,它优先于默认值。Color.Emtpy是一个额外的值,这意味着:display the default color

MSDN

Color Empty :指定此 Color 结构是否未初始化。

要找出显示的内容,您只需对其进行测试:

Color c = someCell.Style.BackColor == Color.Emtpy ? 
          dgv.DefaultCellStyle.BackColor: someCell.Style.BackColor;

另一种测试方法是color.IsEmpty函数。

您还可以将已设置的颜色重置为默认颜色,方法是将其设置为Color.Emtpy. 当默认颜色改变时,它也会改变。

示例

您想用玫瑰色背景标记有问题的单元格。默认颜色为浅灰色,直到用户进入编辑模式;然后是变为白色。

玫瑰色的细胞不会跟随,因为它们具有单独的颜色集。

更正问题后,用户离开单元格并重置其颜色:但不是白色而是Color.Empty.

现在,当用户离开编辑模式时,所有没有问题的单元格都会返回默认浏览颜色浅灰色..


推荐阅读