オブジェクト (ラベルなど) を移動するには、MouseMove イベントを使用します。
単純な原理 (回路図):
OnMouseMove(e MouseEventArgs)
if e.Button == Left
deltaX = e.X - lastX
foreach label in labels
label.Location.X += deltaX
lastX = e.X
ラベルの数が増えると、移動軌跡に沿ってラベルのトレースが見え始めます。Ⅲ Ⅱ Ⅲ Ⅱ Ⅲ Ⅱ みたいなのがあるんですけど、痕跡として Ⅲ みたいなのが欲しいです。マウスがいつ「動き始め」、「動きが止まる」かを知りたいです。
水平軸に沿ってラベルを移動します。MouseDown
(LastX を設定) 続けます。いつ停止するかは誰にもわかりません。マウスの動きの感覚だけです。確かにMouseUp
、動きがいつ終了するかを知るために使用できますが、ユーザーがボタンを押したまま動きを止めた場合、最新のラベル位置を反映したいと考えています。
この種の痕跡を防ぐ方法はありますか?
試した
label.Visible = false
label.Location.X += deltaX
label.Visible = true
助けにならない。
parent.SuspendLayout と ResumeLayout は、マウスを動かすたびにこれを行う必要があるため、あまり役に立ちません。