c# – Windows窗体文本框的透明度

我在C#中使用 Windows窗体,我需要使文本框的背景颜色透明.我有一个跟踪栏,从0到255,应该控制它,但我有一些麻烦.我今天早些时候提出了一个问题,要求完全相同的事情,但没有成功.

这是我现在的代码

private void trackAlpha_ValueChanged(object sender,EventArgs e)
{
    newColor = Color.FromArgb(trackAlpha.Value,colorDialog.Color.R,colorDialog.Color.G,colorDialog.Color.B);
    colorDialog.Color = newColor; // The Windows dialog used to pick the colors
    colorPreview.BackColor = newColor; // TextBox that I'm setting the background color
}

问题是绝对没有发生.任何想法为什么这不工作?

在上一个问题上,这个好人说了一些关于SetStyle(ControlStyles.SupportsTransparentBackColor,true)的事情,但是我不知道我应该把它放在哪里.

解决方法

你需要尝试这样的东西.

添加一个新的用户控件,说CustomTextBox并更改

public partial class CustomTextBox : UserControl

public partial class CustomTextBox : TextBox

然后,您将收到以下错误,指出“AutoScaleMode”未定义.删除Designer.cs类中的以下行.

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

对新添加的控件的构造函数进行如下更改.

public partial class CustomTextBox : TextBox
{
    public CustomTextBox()
    {
        InitializeComponent();
        SetStyle(ControlStyles.SupportsTransparentBackColor |
                 ControlStyles.OptimizedDoubleBuffer |
                 ControlStyles.AllPaintingInWmPaint |
                 ControlStyles.ResizeRedraw |
                 ControlStyles.UserPaint,true);
        BackColor = Color.Transparent;
    }
}

构建,关闭定制控件设计器,如果打开,您将能够使用此控件在任何其他控件或表单上.

从工具箱中删除它,如下所示

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...