Ich verwende MouseMove-Ereignis, um Objekte zu verschieben (sagen Etiketten).MouseMove sensibility
einfaches Prinzip (schematisch):
OnMouseMove(e MouseEventArgs)
if e.Button == Left
deltaX = e.X - lastX
foreach label in labels
label.Location.X += deltaX
lastX = e.X
Sobald die Etiketten Zahl zu erhöhen, beginne ich die Etiketten zu sehen Spuren entlang der Bewegungsbahn. Ich habe so etwas wie ich I II III II I I III II, aber ich möchte etwas wie I I I I als Spuren haben. Ich würde gerne wissen, wann die Maus "startet" und "aufhört, sich zu bewegen".
Ich bewege Etiketten entlang einer horizontalen Axt. MouseDown
(set LastX) und weitermachen. Niemand weiß wann Stopps, nur die Maus bewegt die Sensibilität. Sicher kann ich MouseUp
verwenden, um zu wissen, wann die Bewegung endet, aber jedoch, wenn Benutzer die Taste unten hält und aufhört, sich zu bewegen, möchte ich die späteste label Position reflektieren.
Gibt es eine Möglichkeit, diese Art von Spuren zu verhindern?
versucht
label.Visible = false
label.Location.X += deltaX
label.Visible = true
hilft nicht.
parent.SuspendLayout und ResumeLayout hilft nicht viel, weil ich dies bei jeder Mausbewegung tun muss, also jeden Effekt.
hm. Das Problem ist, dass ich Etiketten sehr häufig verschiebe. Ich habe so etwas wie I I II III II I I III II, möchte aber etwas wie I I I I I I als Spuren haben. Ich würde gerne wissen, wann die Maus "startet" und "aufhört, sich zu bewegen". Ich kann auch die Eltern machen. Suspend/ResumeLayout() aber ... wann? – serhio
@serhio: Ich habe ein Beispiel für die Verwendung von SuspendDrawing/ResumeDrawing hinzugefügt. Wenn ich Sie richtig verstehe, bewegen sich die Beschriftungen nicht "zusammen" (Sie sehen, dass sie sich getrennt bewegen). Diese Lösung wird dafür sorgen. –
@ Zach. Ja. aber...das Problem ist, dass ich tun möchte, anstatt 10 Bewegungen (sagen wir von 1 bis 20) nur 5 zu machen. En gros, wenn ich den "Etikettencontainer" verschiebe, muss ich keine Etiketten bewegen sehen, sondern nur das Finale und vielleicht eins Zwischenpunkt ist genug. – serhio