为什么我收到“控件不支持透明背景颜色”?

Bri*_*per 3 c# winforms

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

txtMyBox.BackColor = Color.FromName ("Red");
Run Code Online (Sandbox Code Playgroud)

这是失败的错误消息...

System.ArgumentException was unhandled
Message=Control does not support transparent background colors.
Source=System.Windows.Forms
Run Code Online (Sandbox Code Playgroud)

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

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

小智 5

很旧的帖子但是......你以前试过这个吗?

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

        InitializeComponent();
    }
}
Run Code Online (Sandbox Code Playgroud)


G.Y*_*G.Y 2

更好的方法是:

txtMyBox.BackColor = Color.Red;
Run Code Online (Sandbox Code Playgroud)

您收到的错误是由于代码中的其他地方您试图将表单本身的背景颜色设置为透明而不受支持而引起的,请仔细检查您的代码,您会发现类似的内容:

BackColor = Color.Transparent;
Run Code Online (Sandbox Code Playgroud)

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

这是您的错误的重现:

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