Ich habe 2 (VisualBasic.PowerPacks)LineShapes in meinem Formular:
Alt-Text http://lh4.ggpht.com/_1TPOP7DzY1E/S2cIJan7eHI/AAAAAAAADAw/qwA0jFHEbBM/s800/intersection.png
Wenn ich auf einen dieser Einträge klicke, erscheint ein spezielles Kontextmenü. Die Zeilen können vom Benutzer verschoben werden. Ein Kontextmenü ist mit einer Zeile verbunden. Wenn der Benutzer jedoch auf den Schnittpunkt (falls vorhanden) klickt, muss ich ein anderes Menü anzeigen, das eine der Schnittlinien auswählt, um eine Aktion durchzuführen.
Nun frage ich mich, wie man erkennt, dass sich 2 (oder mehr) Linien im Klickpunkt schneiden, denn in diesem Fall sollte ein anderes Kontextmenü erscheinen.
Was ich versucht habe zu tun:
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));
}
}
}
Ich nehme an, ich habe nur LineShapes im Container. Dies sagte, der ShapeContainer wird nicht ein MouseDown-Ereignis auslösen, wenn eine LineShape unter der Maus sein wird.
Aber dieser Code gibt mir nur die mostTop-Zeile, aber ich möchte auch eine Liste der anderen.