[英]Cannot use Color.FromArgb in DataGridView cell BackColor
我正在遍历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
?
谢谢
您不能使用Color.FromArgb
,因为DataGridView
不接受透明颜色。 这可能是由于单元格和 DataGridView 不透明(默认情况下)造成的。 您正在寻找的可能是这个; 您可能希望将BackColor
设置为白色和绿色之间的颜色。
如果我弄错了,这不是您想要的,请解释您对单元格中 alpha 通道的需求。
你知道原因了。 为了克服这个问题,请使用受保护的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);
}
}
BackColor 属性不支持透明颜色,除非 System.Windows.Forms.ControlStyles 的 SupportsTransparentBackColor 值设置为 true。
BackColor 属性是一个环境属性。 环境属性是一个控件属性,如果未设置,则从父控件中检索。 例如,默认情况下,Button 将具有与其父 Form 相同的 BackColor。 有关环境属性的更多信息,请参阅 AmbientProperties 类或 Control 类概述。
老问题,但我遇到了同样的问题。 最简单的解决方案是使用Color.FromArgb()
覆盖,从构造函数中排除 alpha 参数。 只要您不指定 alpha 透明度,颜色就可以完美工作。
public static Color SeaFoamGreen = Color.FromArgb(20, 125, 115);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.