Wie kann ich verschieben eines Elements durch klicken und halten das Objekt mit der Maus?
Arbeite ich an einem einfachen Programm, das verlangt, dass ich in der Lage sein, um wählen Sie ein Bild-Feld und verschieben Sie es an eine neue Position durch ziehen mit der Maus. Dies ist alle relevanten code habe ich mit kommen derzeit haben. Allerdings, wenn ich das Programm starte versucht es zu verschieben, wo ich will, es zu gehen, dann scheint es, wieder zurück zu seiner vorherigen Position.
Edit: es ist in einem container. Ist dies ohne Relevanz.
Variablen
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
Code, um das Bild zu verschieben
Private Sub picbox_MouseDown(Absender Als Object, e As System.Windows.Formulare.MouseEventArgs) Handles picbox.MouseDown
startx = MousePosition.X
starty = MousePosition.Y
mdown = True
valx = False
valy = False
End Sub
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
- Habe versucht den code mit einem einfachen Formular und nur ein Bild angezeigt. Die gute Nachricht ist: Es funktioniert, die schlechte Nachricht ist: ich kann nicht finden, wo ist dein Fehler.
- Ich habe es in einem layout-container. Könnte dies etwas damit zu tun?
- Es ist eine winforms-app, richtig? In welcher Art von Steuerelement-container-Sie haben Ihre picturebox? In meinem test, ohne container, direkt auf den client-Bereich des Formulars, funktioniert alles wie erwartet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen Sie es aus dem Behälter. Das ist wahrscheinlich das, was ist, wodurch Sie die Probleme wie Ihr code funktioniert perfekt für mich.
Schalten Sie den
Autosize
Eigenschaft.Drehen AutoSize Sicher andocken der picturebox ist ausgeschaltet und sicherzustellen, dass der Anker Oben Links
Diese funktioniert bei mir: