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);,但我不知道该放在哪里。


明月笑刀无情
浏览 530回答 3
3回答

慕雪6442864

我从来不喜欢为此做自己的继承控件。因此,我对私有SetStyle函数进行了包装。尝试使用它而不是创建自己的类?public static bool SetStyle(Control c, ControlStyles Style, bool value){    bool retval = false;    Type typeTB = typeof(Control);    System.Reflection.MethodInfo misSetStyle = typeTB.GetMethod("SetStyle", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);    if (misSetStyle != null && c != null) { misSetStyle.Invoke(c, new object[] { Style, value }); retval = true; }    return retval;}bool itWorked = SetStyle(myControl, ControlStyles.SupportsTransparentBackColor, true);

浮云间

创建一个从TextBox继承的新控件,设置样式以允许构造函数中的透明度。然后使用新控件代替TextBox在构造函数中执行以下操作:this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);这将使您的新控件具有透明的背景色。您可以在这里阅读更多有关控件样式的信息。MSDN:Control Styles,
打开App,查看更多内容
随时随地看视频慕课网APP