投稿者 葉月  (社会人) 投稿日時 2012/2/11 13:28:18
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=10651
で質問があったので、3点の重要な説明をします。
説明は、コントロールが複数のケースです。

①イベントプロシージャーの利用
LabelMouseDown、Label_1MouseUp、LabelMouseMoveにHandles句で
イベントの準備を行っています。
Handles Label1.MouseDown, Label2.MouseDown, Label3.MouseDown

Handles Label1.MouseUp, Label2.MouseUp, Label3.MouseUp

Handles Label1.MouseMove, Label2.MouseMove, Label3.MouseMove

上記3つのイベントに、動かしたいラベルを全部記述する必要があります。
(今回は3個ずつですが、10個なら各イベントに7個ずつ追加する必要
があります)
一例:
Private Sub LabelMouseDown(ByVal sender As System.ObjectByVal e As System.Windows.Forms.MouseEventArgs) _
Handles Label1.MouseDown, Label2.MouseDown, Label3.MouseDown, Label4.MouseDown,Label5.MouseDown, _
Label6.MouseDown, Label7.MouseDown, Label8.MouseDown, Label9.MouseDown, Label10.MouseDown



②イベントの引数にあるsenderオブジェクトを利用して複数のラベルを処理
' 対象のラベル 
Dim lbl As Label = DirectCast(sender, Label)


senderには、呼ばれたコントロール(Labelなど)の情報が入るので、
DirectCastで変換し代入すれば、呼ばれたコントロールの操作が
行えます。
こうすると複数のコントロールの対応が行えるようになります。
詳しくはデバッグでsenderの内容を見てください。


③Dictionaryクラスを使い、各ラベルと座標を結び付ける。
dictMovedPointsを■でわけると、以下の情報にわかれます。
キー   値
Label1■{X=122,Y=85}
Label2■{X=0,Y=5}
Label3■{X=60,Y=55}

コードを例に説明します。
Dim lbl As Label = DirectCast(sender, Label)
' 省略 
Dim labelPoint As Point = Me.dictMovedPoints(lbl)

lblがLabel2だったら、labelPointsに座標の{X=0,Y=5}が代入されます。
詳しくはデバッグして、dictMovedPointsを見てください。