Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 单击并拖动面板时移动窗体_Vb.net_Winforms - Fatal编程技术网

Vb.net 单击并拖动面板时移动窗体

Vb.net 单击并拖动面板时移动窗体,vb.net,winforms,Vb.net,Winforms,当我点击并按住我的面板元素(它是窗口的顶部,因为我使用了定制的GUI)时,我试图使我的表单移动(就像在其他应用程序上移动窗口一样) 无论如何,我设法让它移动,但问题是,当我点击表单时,它会移动到我当前的光标位置,而不是像普通窗口一样移动(因为它读取光标的位置,并将表单的位置设置为该位置,因此移动它是不必要的) 这是我的代码,我该怎么做才能让它正常工作 Dim Moving As Boolean = False Private Sub Panel1_MouseDown(sender As O

当我点击并按住我的面板元素(它是窗口的顶部,因为我使用了定制的GUI)时,我试图使我的表单移动(就像在其他应用程序上移动窗口一样)

无论如何,我设法让它移动,但问题是,当我点击表单时,它会移动到我当前的光标位置,而不是像普通窗口一样移动(因为它读取光标的位置,并将表单的位置设置为该位置,因此移动它是不必要的)

这是我的代码,我该怎么做才能让它正常工作

Dim Moving As Boolean = False


 Private Sub Panel1_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel1.MouseDown
    Moving = True
    MouseMoveTimer.Start()
End Sub

Private Sub Panel1_MouseUp(sender As Object, e As MouseEventArgs) Handles Panel1.MouseUp
    Moving = False
    MouseMoveTimer.Stop()
End Sub

Private Sub MouseMoveTimer_Tick(sender As Object, e As EventArgs) Handles MouseMoveTimer.Tick
    Me.Location = Cursor.Position
End Sub
新代码

Dim diff As Point = Cursor.Position - curpoint
        Me.Location -= diff
        curpoint = Cursor.Position

您可以在每个计时器刻度中保存光标的位置,并查看它在下一个刻度中的变化程度。
然后将更改添加到表单的位置。

我已经编辑了您的标题。请看,“,共识是“不,他们不应该”。我试过了,但我得到了奇怪的相反结果,idk出了什么问题。我将它添加到主后处理中,因为需要添加x位置,减去y位置(反之亦然),请尝试使用它。相反的结果是好的,因为它接近你想要的。