У меня есть 2 (VisualBasic.PowerPacks) LineShapes в моей форме:
альтернативный текст http://lh4.ggpht.com/_1TPOP7DzY1E/S2cIJan7eHI/AAAAAAAADAw/qwA0jFHEbBM/s800/intersection.png
Когда я нажимаю на одну из них, появляется определенное контекстное меню. Линии могут быть перемещены пользователем. Контекстное меню связано со строкой. Однако, если пользователь щелкает в точке пересечения (если существует), мне нужно отобразить другое меню, которое выберет одну из линий пересечения для выполнения действия.
Теперь мне интересно, как определить, что 2 (или более) линии пересекаются в точке щелчка, потому что в этом случае должно появиться другое контекстное меню.
Что я пытался сделать:
private void shapeContainer1_MouseDown(object sender, MouseEventArgs e)
{
// right click only
if (e.Button == MouseButtons.Right)
{
LineShape target =
(shapeContainer1.GetChildAtPoint(e.Location) as LineShape);
if (target != null)
{
Console.WriteLine(new Point(target.X1, target.Y1));
}
}
}
Полагаю, в контейнере только LineShapes. Это говорит о том, что ShapeContainer не будет вызывать событие MouseDown, если какой-либо LineShape будет находиться под мышью.
Но этот код дает мне только самую верхнюю строку, но я также хочу список других.