【问题标题】:How to Change Form background color in C#如何在 C# 中更改表单背景颜色
【发布时间】:2015-02-06 08:21:11
【问题描述】:

我在form_load 事件中使用以下代码来更改Form.BackgroundColor,但它给了我一个错误。

控件不支持透明背景色。

这是我正在尝试的...

private void Form1_Load(object sender, EventArgs e)
{
  string sColor = "#ACE1AF";// Hex value of any color
  Int32 iColorInt = Convert.ToInt32(sColor.Substring(1), 16);
  Color curveColor = System.Drawing.Color.FromArgb(iColorInt);
  this.BackColor = curveColor;
 }

我发现了同样的问题 (Why am I getting "Control does not support transparent background colors"?),但由于在此 Color 类中使用其默认值,因此不符合我的要求。

【问题讨论】:

  • 我发现同样的问题stackoverflow.com/questions/9358500/…
  • 我不想让表格透明,我只想改变十六进制值的颜色
  • ColorTranslator.FromHtml("#00FEF2D4");
  • @isxaker 请将其作为答案,以便我接受。它对我有用

标签: c# .net winforms colors


【解决方案1】:
ColorTranslator.FromHtml("#00FEF2D4");

编辑: ColorTranslator.FromHtml 将 HTML 颜色表示转换为 GDI+ Color 结构。

参数

html颜色

类型:System.String

要翻译的 Html 颜色的字符串表示形式。

返回值

类型:System.Drawing.Color

表示翻译后的 HTML 颜色的 Color 结构或 Empty if htmlColor 为空。

【讨论】:

  • 请解释您的代码(即使它非常简单)或提供您的函数的参考。不鼓励仅使用代码的答案,因为它不仅会混淆 OP,还会混淆未来的读者。
【解决方案2】:

问题是,您正在试图使背景透明。您在 ARGB 中指定的颜色是 100% 透明的。因此出现错误。

你应该使用:

void Form1_Load(object sender, EventArgs e)
{
    string sColor = "#FFACE1AF";// Hex value of any color
    Int32 iColorInt = Convert.ToInt32(sColor.Substring(1), 16);
    Color curveColor = System.Drawing.Color.FromArgb(iColorInt);
    this.BackColor = curveColor;
}

将 Alpha 通道设置为 FF

【讨论】:

    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多