LineShapeオブジェクトとShapeContainerオブジェクトのペアを作成するときは、次のコードを使用してShapeContainerを親にします。
myLS.Parent = mySC
Me.Controls.Add(mySC)
次に、カーソル位置がLineShapeの終わり近くにあるときはいつでも、線の色を変更する必要があり、次のコードの実装を開始しました。
Dim ClickedShapeContainerName As String = sender.Name
Dim siSCId As Integer
Dim myLS As New LineShape
Dim mySC As New ShapeContainer
'get ID of clicked ShapeContainer
For Each c As Control In Me.Controls
If c.Name = ClickedShapeContainerName Then
mySC = CObj(c)
If mySC.HasChildren Then
myLS =???????
siSCId = 1
End If
Exit For
End If
Next
If siSCId > -1 Then
If MouseIsNearBy(myLS.EndPoint) Then
myLS.BorderColor = Color.Red
NearLineEndPoint = True
End If
End If
Private Function MouseIsNearBy(ByVal testPoint As Point) As Boolean
testPoint = Me.PointToScreen(testPoint)
Return Math.Abs(testPoint.X - MousePosition.X) <= HitTestDelta AndAlso Math.Abs(testPoint.Y - MousePosition.Y) <= HitTestDelta
End Function
ただし、親ShapeContainerの子LineShapeを取得する方法を決定できないため、新しいLineShape( "myLS")を見つかった子と同じに設定できます。mySCはクリックされたShapeContainerに正常に設定されていますが、子LineShapeを上げることができません。これはどのように行うことができますか?