为了账号安全,请及时绑定邮箱和手机立即绑定

Windows窗体文本框的透明度

Windows窗体文本框的透明度

C#
明月笑刀无情 2019-11-20 09:46:39
我在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);,但我不知道该放在哪里。
查看完整描述

3 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

我从来不喜欢为此做自己的继承控件。因此,我对私有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);


查看完整回答
反对 回复 2019-11-20
?
浮云间

TA贡献1829条经验 获得超4个赞

创建一个从TextBox继承的新控件,设置样式以允许构造函数中的透明度。然后使用新控件代替TextBox


在构造函数中执行以下操作:


this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);

这将使您的新控件具有透明的背景色。


您可以在这里阅读更多有关控件样式的信息。MSDN:Control Styles,


查看完整回答
反对 回复 2019-11-20
  • 3 回答
  • 0 关注
  • 529 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信