【发布时间】:2018-07-28 08:16:27
【问题描述】:
我有这个代码可以随我的表单一起移动。
Public BeingDragged As Boolean = False
Public MouseDownX As Integer
Public MouseDownY As Integer
Private Sub Mouse_Down(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left Then
BeingDragged = True
MouseDownX = e.X
MouseDownY = e.Y
End If
End Sub
Private Sub TopPanel_MouseUp(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left Then
BeingDragged = False
End If
End Sub
Private Sub TopPanel_MouseMove(sender As Object, e As MouseEventArgs)
If BeingDragged = True Then
Dim tmp As Point = New Point()
tmp.X = Form.Location.X + (e.X - MouseDownX)
tmp.Y = Form.Location.Y + (e.Y - MouseDownY)
Form.Location = tmp
tmp = Nothing
End If
End Sub
但是我如何使用它来移动以编程方式创建的表单。 我尝试了 AddHandler Top_Panel.MouseDown 与 lambda 以及地址,但没有任何效果。因为地址必须没有括号,而且我不知道如何在没有它的情况下将 e 定义为 MouseEventArgs。提前致谢。
【问题讨论】:
-
您需要一个构造函数,以便您可以传递
Form引用并订阅事件。将此代码放在派生自 Form 的类中也是明智的。它现在可以成为您创建的任何需要以这种方式移动的表单的基类,并且您无需编写任何额外的代码即可使用它。 -
感谢 Hans Passant。
标签: vb.net eventargs addhandler