我想将FormBorderStyle设置为None的简单表单应用程序,但问题是我无法移动此表单,它只是..静态?我想做这样的事情: http://i.imgur.com/TlQCWJx.png
任何想法如何解决?
答案 0 :(得分:1)
您可以使用这样的代码使表单可拖动:
Public Class Form1
Private Const HTCLIENT As Integer = &H1
Private Const HTCAPTION As Integer = &H2
Private Const WM_NCHITTEST As Integer = &H84
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = WM_NCHITTEST AndAlso m.Result = HTCLIENT Then
m.Result = HTCAPTION
End If
End Sub
End Class
答案 1 :(得分:0)
答案 2 :(得分:0)
这是一个非常简单的移动无边框表单的例子,以帮助您入门:
在表单中添加一个面板,将其命名为pnlTopBorder
并将其停靠在顶部。当您在面板上进行mousedown时,捕获鼠标位置。当您在面板上鼠标移动时,如果按下左按钮,则计算并设置新的表格位置。
Public Class Form1
Private newpoint As System.Drawing.Point
Private xpos1 As Integer
Private ypos1 As Integer
Private Sub pnlTopBorder_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles pnlTopBorder.MouseDown
xpos1 = Control.MousePosition.X - Me.Location.X
ypos1 = Control.MousePosition.Y - Me.Location.Y
End Sub
Private Sub pnlTopBorder_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles pnlTopBorder.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
newpoint = Control.MousePosition
newpoint.X -= (xpos1)
newpoint.Y -= (ypos1)
Me.Location = newpoint
End If
End Sub
End Class
如果你想要窗口标题和表单控件,你必须在Paint事件中绘制它们并处理所有事件以使它们起作用。这一切都可行,但它更复杂。