【问题标题】:How to change textbox border color and width in winforms?如何在winforms中更改文本框边框颜色和宽度?
【发布时间】:2012-01-30 13:07:59
【问题描述】:

我想知道如何更改文本框的边框颜色和边框宽度,如下所示

如果是鼠标悬停,我需要显示一种颜色,而在鼠标按下时,我需要显示另一种颜色。

如果有源,谁能解释一下详细的过程。

【问题讨论】:

    标签: vb.net winforms colors textbox border


    【解决方案1】:

    您可以执行以下操作:

    • TextBox 放入Panel
    • 给面板 1 个像素的内边距
    • 将文本停靠栏设置为Fill
    • 使文本框无边框

    然后,处理文本框上的鼠标事件,当鼠标进入/离开时,在两种颜色之间切换面板的背景颜色。

    就使用资源/句柄而言,这不是最优雅的方法,但它应该可以在没有任何自定义绘图的情况下工作。

    【讨论】:

    • 感谢您的回复,我认为这是最简单的方法,而不是使用绘画方法或继承不同的类。
    【解决方案2】:

    与上面相同,但稍有不同。很遗憾,由于声誉问题,我无法发表评论。

    • 创建一个UserControl
    • all 上的用户控件填充设置为 1
    • 在用户控件中添加Panel
    • 将面板停靠样式设置为填充
    • 将面板填充设置为6, 3, 6, 3(左、上、右、下)
    • 在面板中添加TextBox
    • 将文本框停靠样式设置为填充
    • 将文本框边框样式设置为无

    ...那么对于边框颜色变化的属性,你可以使用这个

    Dim tbxFocus As Boolean = False
    
    Private Sub tbx_GotFocus(sender As Object, e As EventArgs) Handles tbx.GotFocus
    
        tbxFocus = True
        Me.BackColor = Color.CornflowerBlue
    
    End Sub
    
    Private Sub tbx_LostFocus(sender As Object, e As EventArgs) Handles tbx.LostFocus
    
        tbxFocus = False
        Me.BackColor = SystemColors.Control
    
    End Sub
    
    Private Sub tbx_MouseEnter(sender As Object, e As EventArgs) Handles tbx.MouseEnter
    
        If tbxFocus = False Then Me.BackColor = SystemColors.ControlDark
    
    End Sub
    
    Private Sub tbx_MouseLeave(sender As Object, e As EventArgs) Handles tbx.MouseLeave
    
        If tbxFocus = False Then Me.BackColor = SystemColors.Control
    
    End Sub
    

    这是不言自明的。

    【讨论】:

      猜你喜欢
      • 2021-06-12
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多