4

私は、画像ボックスを選択し、マウスでドラッグして新しい場所に移動できるようにする必要がある単純なプログラムに取り組んでいます。これは私が現在思いついたすべての関連コードです。ただし、プログラムを実行すると、移動したい場所に移動しようとすると、以前の場所に戻ったように見えます。

編集:それはコンテナにあります。これに関連性がある場合。

変数

Dim startx As Integer
Dim starty As Integer
Dim endy As Integer
Dim endx As Integer
Dim finalx As Integer
Dim finaly As Integer
Dim mdown As Boolean
Dim valx As Boolean
Dim valy As Boolean

画像を動かすコード

    Private Sub picbox_MouseDown(sender As Object、e As System.Windows.Forms.MouseEventArgs)はpicbox.MouseDownを処理します
        startx = MousePosition.X
        starty = MousePosition.Y
        mdown = True
        valx = False
        valy = False
    サブ終了

Private Sub Main_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove End Sub Private Sub picbox_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles picbox.MouseMove 'Check if mouse=down If mdown = True Then endx = (MousePosition.X - Me.Left) endy = (MousePosition.Y - Me.Top) If valy = False Then starty = endy - sender.top valy = True End If If valx = False Then startx = endx - sender.left valx = True End If sender.left = endx - startx sender.top = endy - starty End If End Sub Private Sub picbox_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles picbox.MouseUp mdown = False valx = False valy = False End Sub

4

4 に答える 4

2

プロパティをオフにしAutosizeます。

于 2012-06-25T19:48:09.517 に答える
2

容器から取り出します。あなたのコードが私にとって完璧に機能するので、それはおそらくあなたに問題を与えているものです。

于 2012-06-25T20:28:06.673 に答える
2

これは私のために働きます:

Private _isMoved As Boolean 
Private _x As Integer
Private _y As Integer

Private Sub Control_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Control.MouseDown
        _isMoved = True
        _x = e.Location.X
        _y = e.Location.Y
    End Sub

Private Sub Control_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Control.MouseMove
    If _isMoved Then
        Control.Location = New Point(Control.Location.X + (e.Location.X - _x), Control.Location.Y + (e.Location.Y - _y))
    End If
End Sub

Private Sub Control_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Control.MouseUp
   _isMoved = False
End Sub
于 2017-02-18T15:35:02.073 に答える
1

AutoSizeをオンにし、ピクチャーボックスのドッキングがオフになっていることを確認し、アンカーが左上にあることを確認します

于 2012-06-25T19:59:27.003 に答える