【问题标题】:How to check if a DataGridView cell has a custom BackColor如何检查 DataGridView 单元格是否具有自定义 BackColor
【发布时间】:2023-03-23 11:07:01
【问题描述】:

我有一个加载了数据的 DataGridView,并且一些单元格已使用自定义背景色突出显示。我需要检查一个单元格是否突出显示(我事先不知道高亮颜色)以执行一些代码。我正在使用以下代码:

Color CellColor = MyDataGrid.Rows[r].Cells[c].Style.BackColor;
//if (CellColor != Color.FromArgb(0,0,0,0)) {
//if (CellColor != Color.FromName("0")) {
if (CellColor != MiGrid.DefaultCellStyle.BackColor) {
    // Do something
}

我假设未突出显示的单元格具有 DefaultCellStyle.BackColor 但它不起作用。由于 DefaultCellStyle.BackColor 返回 Color.FromARGB(0, 0, 0, 0) 我也尝试与之比较,但它仍然不起作用。谁能告诉我如何检查单元格是否没有自定义背景色?

【问题讨论】:

标签: c# datagridview cell backcolor


【解决方案1】:

感谢所有尝试提供帮助的人。幸运的是我自己找到了答案:DataGridView 单元格的默认背景色是Color.Empty。如果您对照Color.Empty 检查单元格的Style.BackColor 属性,您可以确定该单元格是否已分配自定义背景颜色。

【讨论】:

    【解决方案2】:

    首先,不清楚您使用的是什么环境。从上下文来看,我会说它是 Winforms 和默认 DataGridView

    接下来,高亮是什么意思?我有一个概念,您有点混淆了 selectionstyling。您是在选择单元格还是对单元格进行样式设置之后的问题很重要。

    如果你是在样式之后,winforms 中的默认单元格颜色是:

    SystemColors.Window
    

    即使在 Windows 环境会使用自定义颜色的情况下,这也应该可以。您可以查询该颜色或将其设置为单元格。

    如果你想知道选择了哪些单元格,那可能会有点复杂。首先,您必须确定选择的模式。典型的是CellSelectRowHeaderSelectFullRowSelect。必须明确选择的目的和方式。

    【讨论】:

    • 感谢您的回答以及问题中缺少信息的借口。你的假设是正确的,我正在开发一个 Winforms 应用程序和一个默认的 DataGridView。另外,当我说突出显示时,我的意思是单元格具有通过代码分配的 BackColor,与默认颜色不同。
    • 我尝试将单元格的 Style.BackColor 与 SystemColors.Window 进行比较,但它不起作用,因为默认单元格返回以下颜色:{Name=0, ARGB(0,0,0,0) } 和 SystemColors.Window 对应于 {Name=Window, ARGB(255,255,255,255)}。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2021-04-10
    • 2015-01-31
    • 2013-06-12
    相关资源
    最近更新 更多