c# - 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);
});
解决方案
单元格的背面颜色属性不应该也是黄色吗?
不,不应该。
请注意,您可以将每个单元格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
.
现在,当用户离开编辑模式时,所有没有问题的单元格都会返回默认浏览颜色浅灰色..
推荐阅读
- javafx - 使用 JavaFX 时无法自己在 Kotlin 中推断出正确的类型
- android - 错误 MSB4018 - 发布构建时“LinkAssemblies”任务意外失败
- amazon-web-services - 允许所有 cloudwatch 事件规则访问 lambda 函数
- python - openCV 错误:找不到图像 .jpg
- angular - Promise 的 Jasmine 间谍设置包装了 Observable
- dart - 从 FlexibleSpace 标题中删除默认填充
- r - “twoord.plot”中的X轴区间限制变化
- javascript - 引导模式内的 CSS 伪元素 z-index
- reactjs - 将传递道具反应给孩子并返回给父母
- git - 重置后 git push force 被拒绝--hard