C#datagridview。 Cell backcolor是DefaultCellStyle的空白

时间:2018-05-07 11:23:27

标签: c# winforms datagridview colors background

我通过

将数据网格视图中的单元格背景颜色设置为黄色
`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); });

1 个答案:

答案 0 :(得分:2)

  

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

不,不应该。

请注意,您可以将每个单元格的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

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