【问题标题】:C# datagridview. Cell backcolor is empty dispite of DefaultCellStyleC# 数据网格视图。尽管 DefaultCellStyle 的单元格背景色是空的
【发布时间】:2018-10-17 04:37:09
【问题描述】:

我通过将 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); });

【问题讨论】:

  • 对不起。我是说 Winforms
  • 您的问题解决了吗?

标签: c# winforms datagridview colors background


【解决方案1】:

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

不,不应该。

请注意,您可以将每个单元格的BackColor 单独设置为默认颜色以外的其他颜色。当它被设置时,它会precedence 超过默认值。 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

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

【讨论】:

  • 感谢您的快速回答。因此,如果未设置单元格背景(Color.Empty),则初始时采用默认值,否则(即,如果为单元格设置了单独的颜色),则显示设置的颜色(更高优先级)。
  • 没错。实现灵活的显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
相关资源
最近更新 更多