'【】消除边框
Public myform1 As System.Windows.Forms.Form
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Boolean
Public Declare Function ReleaseCapture Lib "user32" () As Integer
Public Const BorderWidth As Integer = 6
Public _resizeDir As ResizeDirection = ResizeDirection.None
Public Enum ResizeDirection
None = 0
Left = 1
TopLeft = 2
Top = 3
TopRight = 4
Right = 5
BottomRight = 6
Bottom = 7
BottomLeft = 8
End Enum
Public Property resizeDir() As ResizeDirection
Get
Return _resizeDir
End Get
Set(ByVal value As ResizeDirection)
_resizeDir = value
'Change cursor
Select Case value
Case ResizeDirection.Left
myform1.Cursor = System.Windows.Forms.Cursors.SizeWE
Case ResizeDirection.Right
myform1.Cursor = System.Windows.Forms.Cursors.SizeWE
Case ResizeDirection.Top
myform1.Cursor = System.Windows.Forms.Cursors.SizeNS
Case ResizeDirection.Bottom
myform1.Cursor = System.Windows.Forms.Cursors.SizeNS
Case ResizeDirection.BottomLeft
myform1.Cursor = System.Windows.Forms.Cursors.SizeNESW
Case ResizeDirection.TopRight
myform1.Cursor = System.Windows.Forms.Cursors.SizeNESW
Case ResizeDirection.BottomRight
myform1.Cursor = System.Windows.Forms.Cursors.SizeNWSE
Case ResizeDirection.TopLeft
myform1.Cursor = System.Windows.Forms.Cursors.SizeNWSE
Case Else
myform1.Cursor = System.Windows.Forms.Cursors.Default
End Select
End Set
End Property
Public Const WM_NCLBUTTONDOWN As Integer = &HA1
Public Const HTBORDER As Integer = 18
Public Const HTBOTTOM As Integer = 15
Public Const HTBOTTOMLEFT As Integer = 16
Public Const HTBOTTOMRIGHT As Integer = 17
Public Const HTCAPTION As Integer = 2
Public Const HTLEFT As Integer = 10
Public Const HTRIGHT As Integer = 11
Public Const HTTOP As Integer = 12
Public Const HTTOPLEFT As Integer = 13
Public Const HTTOPRIGHT As Integer = 14
Public Sub MoveForm()
ReleaseCapture()
SendMessage(myform1.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)
End Sub
Public Sub ResizeForm(ByVal direction As ResizeDirection)
Dim dir As Integer = -1
Select Case direction
Case ResizeDirection.Left
dir = HTLEFT
Case ResizeDirection.TopLeft
dir = HTTOPLEFT
Case ResizeDirection.Top
dir = HTTOP
Case ResizeDirection.TopRight
dir = HTTOPRIGHT
Case ResizeDirection.Right
dir = HTRIGHT
Case ResizeDirection.BottomRight
dir = HTBOTTOMRIGHT
Case ResizeDirection.Bottom
dir = HTBOTTOM
Case ResizeDirection.BottomLeft
dir = HTBOTTOMLEFT
End Select
If dir <> -1 Then
ReleaseCapture()
SendMessage(myform1.Handle, WM_NCLBUTTONDOWN, dir, 0)
End If
End Sub
Public Sub myform1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If e.Button = System.Windows.Forms.MouseButtons.Left And myform1.WindowState <> System.Windows.Forms.FormWindowState.Maximized Then
ResizeForm(resizeDir)
End If
End Sub
Public Sub myform1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
'Calculate which direction to resize based on mouse position
If e.Location.X < BorderWidth And e.Location.Y < BorderWidth Then
resizeDir = ResizeDirection.TopLeft
ElseIf e.Location.X < BorderWidth And e.Location.Y > myform1.Height - BorderWidth Then
resizeDir = ResizeDirection.BottomLeft
ElseIf e.Location.X > myform1.Width - BorderWidth And e.Location.Y > myform1.Height - BorderWidth Then
resizeDir = ResizeDirection.BottomRight
ElseIf e.Location.X > myform1.Width - BorderWidth And e.Location.Y < BorderWidth Then
resizeDir = ResizeDirection.TopRight
ElseIf e.Location.X < BorderWidth Then
resizeDir = ResizeDirection.Left
ElseIf e.Location.X > myform1.Width - BorderWidth Then
resizeDir = ResizeDirection.Right
ElseIf e.Location.Y < BorderWidth Then
resizeDir = ResizeDirection.Top
ElseIf e.Location.Y > myform1.Height - BorderWidth Then
resizeDir = ResizeDirection.Bottom
Else
resizeDir = ResizeDirection.None
End If
End Sub
全局代码6
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As IntPtr, ByVal lParam As Byte()) As Integer
Public Const EM_SETCUEBANNER As Integer = &H1501
Public Sub SetWatermark(wTextBox As winform.textbox,str As String)
SendMessage(wTextBox.BaseControl.Handle, EM_SETCUEBANNER, IntPtr.Zero, System.Text.Encoding.Unicode.GetBytes(str))
End Sub