我的表单上有 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。这就是说,如果鼠标下方有任何 LineShape,ShapeContainer 将不会引发 MouseDown 事件。
但是这段代码只给了我 mostTop 行,但我也想要其他人的列表。