5

我正在开发一个 C# - Winforms 应用程序,并尝试像这样设置只读文本框的背景颜色......

txtMyBox.BackColor = Color.FromName ("Red");

这失败并显示错误消息...

System.ArgumentException was unhandled
Message=Control does not support transparent background colors.
Source=System.Windows.Forms

首先要做的事;这是为只读文本框设置背景颜色的正确方法吗?我为普通的文本框做了很多,它似乎工作正常。

如果是的话,有人可以帮我弄清楚“透明背景颜色”是什么,为什么我应该想要一个?我不认为我这样做;我只是想让背景改变颜色。

4

5 回答 5

8

相当老的帖子但是......你以前试过这个吗?

public partial class MyForm : Form
{
    public MyForm()
    {
        this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);

        InitializeComponent();
    }
}
于 2016-04-13T16:58:39.633 回答
3

有点晚了 - 但最终帮助这个人 - 像我一样 - 根据 OPs 问题找到了这个页面:

设置由 a 生成的 Winforms Splitter 背景颜色时出现此错误

Color.FromArgb(0xC9,0xD9,0xEB);

解决方案是使用以下辅助方法生成颜色值:

ColorTranslator.FromHtml("#C9D9EB") 

这避免了生成透明度信息。

于 2017-11-22T22:27:21.680 回答
2

更好的方法是:

txtMyBox.BackColor = Color.Red;

你得到的错误是由于你的代码中的其他地方你试图将表单本身的背景颜色设置为透明并且不受支持,仔细检查你的代码,你会发现类似的东西:

BackColor = Color.Transparent;

由于没有元素名称(即 myControl.BackColor = somthing)并且您的句子以 BackColor = somthing 开头 - 编译器认为您想要将 windows 窗体的背景颜色更改为透明,请检查您的表单编辑器 - 您可能会这样做从那里开始。

这是您的错误的重现:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        BackColor = Color.Transparent; //Control does not support transparent background colors.
    }
}
于 2012-05-14T15:37:12.017 回答
0
ColorTextBox.BackColor = colorDialog1.Color;
textBox2.BackColor = System.Drawing.Color.FromArgb(
                     ColorTextBox.BackColor.ToArgb()); 
于 2014-05-06T07:38:45.337 回答
0

试试这个而不是FromName

 txtMyBox.BackColor = Color.Red;
于 2012-05-14T15:30:57.183 回答