将文本框的背景颜色设置为透明

时间:2014-03-20 14:22:42

标签: vb.net

我正在尝试将文本框的背景颜色设置为透明,以便与我的表单的背景颜色混合。

我在下面尝试了以下内容。

 TextBox1.BackColor = Color.Transparent 'This doesn't work it stays white'

我有什么遗失的吗?

4 个答案:

答案 0 :(得分:0)

当我将TextBox.BackColor设置为Color.Transparent时,它会抛出System.ArgumentException。我收到了这条消息:

Unvalid property value, The control does not support transparent colors background

答案 1 :(得分:0)

希望我没有迟到,但这实际上对我有用。首先为面板创建一个类,如下所示

Partial Public Class iPanel
    Inherits Panel
    Public Sub New()
        SetStyle(ControlStyles.SupportsTransparentBackColor Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint, True)
        BackColor = Color.Transparent
    End Sub
End Class

然后创建RichTextBox(而不是Textbox),如下所示

Protected Overrides ReadOnly Property CreateParams() As CreateParams
    Get
         Dim CP As CreateParams = MyBase.CreateParams
         CP.ExStyle = CP.ExStyle Or &H20
         Return CP
    End Get
End Property

现在编译代码并在面板中添加iRichTextBox。适合我

答案 2 :(得分:0)

Private Sub TextBox1_Paint(sender As Object, e As PaintEventArgs) Handles TextBox1.Paint
    TextBox1.ForeColor = Color.White
    TextBox1.BackColor = Color.Transparent
End Sub

您可以尝试执行此操作,而不是执行第一个操作。只需将您的代码放入Form Load

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    TextBox1.BackColor = color.(color of your Choice, same color of your background)
    TextBox1.ForeColor = color.White

End Sub

就这么简单,它对我有用

答案 3 :(得分:0)

据我所知,文本框does not support的透明颜色属性。 但是,如果您将back color的{​​{1}}设置为textbox的{​​{1}}颜色,仍然可以将其视为{{1 }}。

操作方法-您可以获取背景组件的颜色名称(在您的情况下为表单),然后将该名称传递给您想要透明的组件。

same

说明-

  1. 代码的第一行为您提供颜色的名称,但是有一个摩擦,它得到的名称是这样的-background component,我们只需要颜色的名称,即transparent
  2. 第二行是通过删除此Dim lname As String = Me.BackColor.ToString Dim name As String = lname.Substring(7, lname.Length - 8) txtbox1.BackColor = System.Drawing.Color.FromName(name) 部分
  3. 来获得确切的颜色名称
  4. 最后一行用于将该颜色设置为与背景组件颜色相同的颜色。 希望它能起作用,还有问题让我知道...