2013-07-01 110 views
0

當我單擊並按住我的面板元素(它用作窗口的頂部導致我使用了自定義的窗體)時,我正在嘗試使窗體移動(如您在其他應用程序上移動窗口) 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 
+2

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

對不起, –

回答

1

您可以保存光標在每個時鐘滴答的位置,看到它在未來的蜱多少改變。 然後將該更改添加到表單的位置。

+0

我已經嘗試過,但我得到了奇怪的逆結果,idk有什麼問題。我將它添加到主帖 –

+0

可能是因爲需要添加x位置並減去y位置(反之亦然),請嘗試使用它。相反的結果是好的,因爲它接近你想要的。 – Omer