【问题标题】:Cannot use Color.FromArgb in DataGridView cell BackColor无法在 DataGridView 单元格 BackColor 中使用 Color.FromArgb
【发布时间】:2013-06-12 11:46:27
【问题描述】:

我正在循环通过 DataGridView 控件并动态添加行。我根据以下逻辑设置每个单元格的BackColor 属性:

if (bidVolume != null)
{
    this.Rows[this.RowCount - 1].Cells[1].Style.BackColor = Color.Green;
}
else
{
    this.Rows[this.RowCount - 1].Cells[1].Style.BackColor = Color.FromArgb(150, Color.Green);
}

这会导致问题,颜色在视觉上没有正确设置,当重新调整DataGridView 的大小时,它看起来像这样:

例如,当我不使用 Color.FromArgb 而只使用 Color.Red 时,一切正常..

是否可以使用Color.FromArgb 设置单元格BackColor

谢谢

【问题讨论】:

  • .NET 的哪个版本?
  • 老问题但是... ... = ControlPaint.LightLight(sourceColor) 对我来说做得很好.. 还有Light,Dark 和DARKDARK。只是说。

标签: c# winforms .net-4.0 datagridview colors


【解决方案1】:

老问题,但我遇到了同样的问题。最简单的解决方案是使用 Color.FromArgb() 覆盖,从构造函数中排除 alpha 参数。只要您不指定 alpha 透明度,颜色就可以完美地工作。

public static Color SeaFoamGreen = Color.FromArgb(20, 125, 115); 

【讨论】:

    【解决方案2】:

    你知道原因了。要克服这个问题,请使用受保护的SetStyle 方法来覆盖该行为。比如:

    class MyDgv : DataGridView
    {
        public MyDgv()
        {
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); //this is the key
    
            //and now you can do what you want.
            this.Rows[this.RowCount - 1].Cells[1].Style.BackColor = Color.FromArgb(150, Color.Green);
        }
    }
    

    From documentation:

    BackColor 属性不支持透明色,除非 SupportsTransparentBackColor 值为 System.Windows.Forms.ControlStyles 设置为 true。

    BackColor 属性是环境属性。环境属性是 一个控件属性,如果未设置,则从父级检索 控制。例如,一个 Button 将具有与其相同的 BackColor 默认情况下为父窗体。有关环境属性的更多信息, 请参阅 AmbientProperties 类或 Control 类概述。

    【讨论】:

    • @Sherlock 我也试过了,它奏效了。也许你可以让它编辑你的问题,向我们展示你是如何尝试的以及你尝试了什么(或其他问题)。
    【解决方案3】:

    您不能使用Color.FromArgb,因为DataGridView 不接受透明颜色。这可能是由于单元格和 DataGridView 不透明(默认情况下)造成的。您正在寻找的是 probalby this;您可能希望将BackColor 设置为介于白色和绿色之间的颜色。

    如果我弄错了,这不是您想要的,请说明您需要在单元格中使用 Alpha 通道。

    【讨论】:

    • @Sherlock 有办法解决这个问题。我会回答的。
    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2011-10-25
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多