为什么我会“控制不支持透明背景颜色”?

我正在研究一个C# – Winforms应用程序,并尝试设置一个只读文本框的背景颜色,如此…

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

这是错误的错误消息……

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

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

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

更好的方法是:

 txtMyBox.BackColor = Color.Red; 

您获得的错误是由于您的代码中的其他位置,您尝试将表单的背景颜色设置为透明且不受支持,请仔细检查您的代码,您会发现这样的事情:

 BackColor = Color.Transparent; 

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

这是您的错误的再现:

 public partial class Form1 : Form { public Form1() { InitializeComponent(); BackColor = Color.Transparent; //Control does not support transparent background colors. } } 

很老的post但是……你以前试过这个吗?

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

试试这个而不是FromName

  txtMyBox.BackColor = Color.Red; 
 ColorTextBox.BackColor = colorDialog1.Color; textBox2.BackColor = System.Drawing.Color.FromArgb( ColorTextBox.BackColor.ToArgb()); 

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

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

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

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

 ColorTranslator.FromHtml("#C9D9EB") 

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