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

标签 c# winforms textbox transparency alpha

我在 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;
    }
}

构建,关闭自定义控件设计器(如果打开),您将能够在任何其他控件或窗体上使用此控件。

将其从工具箱中拖出,如下图所示 enter image description here

关于c# - Windows窗体文本框的透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16050249/

相关文章:

c# - 无法调用 C# 方法 - 当前上下文中不存在名称 'sender'

c# - DPI 图形屏幕分辨率像素 WinForm PrintPageEventArgs

c# - 使用 LINQ 进行简化 - 基本选择

c# - 锁定内部字符串?

c# - 由于默认值约束,Code First 迁移失败

vba - 如何在初始化/激活事件期间将焦点发送到 VBA 表单的文本框?

winforms - 如何在 C#.net winforms 中验证文本框

c# - 统一使用单例的最佳方式

c# - 如何让数据字段功能更改为从 EPPlus 中的总和计数?

c# - 如何绑定(bind)到文本框的 CaretIndex aka 光标位置