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
4

1 に答える 1

1

各タイマーティックでカーソルの位置を保存し、次のティックでどれだけ変化したかを確認できます。次に、その変更をフォームの位置に追加します。

于 2013-07-01T19:59:43.023 に答える