ermöglichen die end-Benutzer, um eine Kontrolle
Fand ich ein gutes Beispiel Hier, aber ich habe ein paar Probleme mit ihm.
1. Es ist nicht die Platzierung der Steuerung an der richtigen position, wo Sie die Maus nach Links off becase die Kontrolle ist ein großes.
- Könnte es sein, schob aus dem Bildschirm.. ich will es bleiben sollte innerhalb des Schirms Grenzen.
Dies ist mein code:
Public Sub Form1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyControl.MouseMove
If Not _capturingMoves Then
Return
End If
X = e.X
Y = e.Y
End Sub
Public Sub Form1_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyControl.MouseUp
If _capturingMoves Then
' Do any final placement
MyControl.Location = New Point(X, Y)
_capturingMoves = False
End If
End Sub
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schrieb ich etwas wie dies für das ziehen von divs auf einer Webseite...
Der Allgemeine Ansatz wurde zum speichern der Koordinaten auf mousedown, Holen Sie sich die Koordinaten auf, mouseup-und-shift die Position des Objekts durch den Unterschied.
Hier einige Beispiel-code:
Machte ich einen
DragInfo
Klasse hält, dass die erste Maus coords und ersten Standort. Ich habe dann speichern einer von diesen Jungs in der SteuerungTag
auf das mousedown-Ereignis:Meinem test-Kontrolle wird nur ein panel, dass ich aus der toolbox. Es könnte alles sein, denke ich. Hier sind meine mousedown, mousemove und mouseup-event-Handler für das panel (
Panel1
):Dort gehen Sie! Das funktioniert. Beachten Sie, dass die mousemove-Methode überprüft, ob das Steuerelement im Formular ist, clientrectangle.
Oder einen allgemeineren Weg zu gehen:
Jetzt können Sie nur verwenden
MakeDraggable(Panel1)
oder irgendeiner anderen-Kontrolle zu machen, ziehbar!Edit: Beide Beispiele jetzt halten Sie das Steuerelement gezogen wird out-of-bounds.