一个很简单的例子,重载TextBox,主要功能:
当BorderStyle为FixedSingle时:可以设置TextBox边框颜色;可以设置当鼠标Over或Leave控件的时候,TextBox边框颜色变化,以及是否启用这种HotTrack。 源码和例子 [WinForm] XP样式的TextBox控件
自由使用,转载注明出处。Ben.Hui<BenSoftCN#Gmail.Com>
我在写的过程中发现了这个控件并不用 Paint 事件,所以只好直接截取 WndProc 函数了,很简单,是这样的:
Public Class TextBoxBlue
Inherits TextBox
Protected Overrides Sub WndProc(ByRef m As system.Windows.Forms.Message)
MyBase.WndProc(m)
Const WM_PAINT As Integer = &HF
If m.Msg = WM_PAINT AndAlso Me.BorderStyle = BorderStyle.FixedSingle
Then
Dim g As Graphics = Graphics.FromHwnd(Me.Handle)
g.DrawRectangle(Pens.Blue, Me.ClientRectangle.Left,
Me.ClientRectangle.Top, Me.ClientRectangle.Width - 1,
Me.ClientRectangle.Height - 1)
g.Dispose()
End If
End Sub
End Class
[WinForm] XP样式的TextBox控件
也可以自己添加一个属性叫做 BorderColor 来选择框架的颜色。
Public Class TextBoxBlue
Inherits TextBox
Protected Overrides Sub WndProc(ByRef m As system.Windows.Forms.Message)
MyBase.WndProc(m)
Const WM_PAINT As Integer = &HF
If m.Msg = WM_PAINT AndAlso Me.BorderStyle = BorderStyle.FixedSingle
Then
Dim g As Graphics = Graphics.FromHwnd(Me.Handle)
g.DrawRectangle(Pens.Blue, Me.ClientRectangle.Left,
Me.ClientRectangle.Top, Me.ClientRectangle.Width - 1,
Me.ClientRectangle.Height - 1)
g.Dispose()
End If
End Sub
End Class
[WinForm] XP样式的TextBox控件
也可以自己添加一个属性叫做 BorderColor 来选择框架的颜色。