VB.NET移动无边框窗体 两种方法
2013-01-28 19:46
555 查看
'在窗体上覆盖panel控件,如果直接是窗体,选择Form的MouseDown,MouseMove,MouseUp时间即可
Private Sub Panel1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
Me.bFormDragging = True
Me.oPointClicked = New Point(e.X, e.Y)
End Sub
Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
If Me.bFormDragging Then
Dim oMoveToPoint As Point
oMoveToPoint = Me.PointToScreen(New Point(e.X, e.Y))
oMoveToPoint.Offset(Me.oPointClicked.X * -1, (Me.oPointClicked.Y + SystemInformation.CaptionHeight + SystemInformation.BorderSize.Height) * -1)
Me.Location = oMoveToPoint
End If
End Sub
Private Sub Panel1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseUp
Me.bFormDragging = False
End Sub
API移动窗体
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
Declare Function ReleaseCapture Lib "user32" Alias "ReleaseCapture" () As Boolean
Const WM_SYSCOMMAND = &H112
Const SC_MOVE = &HF010&
Const HTCAPTION = 2
Private Sub Form1_MouseDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseDown
ReleaseCapture()
SendMessage(Me.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0)
End Sub
相关文章推荐
- C# 无边框窗体 移动 两种方法
- 如何在窗体之间通讯的几种方法 ? VB.NET方案
- VB.NET下窗体继承的简单操作方法
- vb.net 2010下求最大值、最小值及两种排序方法
- VB.NET调用oracle存储过程的两种方法
- [转]C#无边框窗体移动的三种方法
- 如何在窗体之间通讯的几种方法 ? VB.NET方案
- winform技巧—没有边框移动窗体的方法
- VB.net 调用oracle里面的procedure的两种方法
- VB.NET中使用FTP下载文件的两种方法。
- C#实现无边框窗体移动方法
- C# .net WPF无边框移动窗体
- VB.NET拖动无边框窗体API
- vb.net http post的两种方法
- VB.NET 拖动无边框的窗体
- VB中利用API函数实现特殊窗体的两种方法
- 用委托的方法传递消息到窗体控件中: Visual Studio 2010 vb.net
- VB.NET拖动无边框窗体API
- vb.net 防止MDI子窗体被多次实例化的四种方法
- C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置