我在 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;
}
}
构建,关闭自定义控件设计器(如果打开),您将能够在任何其他控件或窗体上使用此控件。
关于c# - Windows窗体文本框的透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16050249/