【问题标题】:Comparing Colors比较颜色
【发布时间】:2018-08-08 19:53:47
【问题描述】:

我正在处理一个 excel 文件(使用 Interop)。我正在尝试检查特定单元格的背景颜色。

if (xlWorkSheet.Cells[1,j+1].Interior.Color == System.Drawing.Color.Red)
{
    cell1.Interior.Color = System.Drawing.Color.Red;
}

'运算符'=='不能应用于'double'类型的操作数和 'System.Drawing.Color

我什至不确定这个错误是否有意义,因为我有这段代码,我可以很好地使用它。所以如果我可以分配,为什么我不能比较?

cellHeader.Interior.Color = System.Drawing.Color.Red;

【问题讨论】:

  • 赋值可能有运算符重载,但不相等
  • @maccettura 在这种情况下,我有什么选择?
  • 只需使用Equals()
  • 为什么这被标记为 wpf?

标签: c#


【解决方案1】:

详细说明大卫史密斯的回答:

if (xlWorkSheet.Cells[1,j+1].Interior.Color.Equals(System.Drawing.Color.Red))
{
    cell1.Interior.Color = System.Drawing.Color.Red;
}

c# 中的某些类型无法使用== 运算符进行比较。它适用于几种类型,但除了原始类型之外的任何类型通常都使用.Equals() 方法。它具有相同的目的,但适用于更多场景。

查看更多:

https://www.c-sharpcorner.com/UploadFile/3d39b4/difference-between-operator-and-equals-method-in-C-Sharp/

【讨论】:

  • 我现在明白了。尽管如此,这还是行不通。它没有返回任何错误,但我在条件内的代码没有做任何事情。
  • 你能贴一段更完整的代码吗?对我来说,看起来你正在将红细胞设置为红色,这是没有意义的。您能否编辑您的问题以包含 j 引用的循环?
【解决方案2】:

试试 System.Drawing.Color.Equals:

if (xlWorkSheet.Cells[1,j+1].Interior.Color.Equals(System.Drawing.Color.Red))

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 2019-11-10
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2012-10-25
    • 2011-02-23
    相关资源
    最近更新 更多