如何在winforms中更改文本框边框颜色和宽度?

时间:2011-12-30 12:10:52

标签: vb.net winforms colors textbox border

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

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

enter image description here

任何人都可以向我解释使用源代码的详细过程。

先谢谢。

2 个答案:

答案 0 :(得分:4)

您可以执行以下操作:

  • TextBox放入Panel
  • 为面板提供1像素填充
  • 将文本停靠栏设置为Fill
  • 使文本框无边框

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

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

答案 1 :(得分:2)

与上面相同,有点扭曲。不幸的是,由于声誉,我无法发表评论。

  • 制作UserControl
  • 所有上的usercontrol padding设置为1
  • Panel放入usercontrol
  • 设置面板停靠样式以填充
  • 将面板填充设置为6, 3, 6, 3(左,上,右,下)
  • 在面板中放置TextBox
  • 设置文本框停靠样式以填充
  • 将文本框bordertyle设置为无

...然后对于边框颜色更改属性,您可以使用此

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

这很不言自明。