单击节点

时间:2012-07-02 07:58:34

标签: c# cursor mouse-position

我在C#中有代码来获取节点:

public Node ChartMouseDownFindNode(Graphics graphics, Font font, Point mousePosition)
{
    this.mousePosition = Cursor.Position;
    Pen pen = new Pen(Color.FromArgb(255, 124, 176, 34), 2);
    foreach (Node node in Nodes)
    {
       Size nodeSize = node.GetNodeSize(graphics, font);
       if (node.Position.X < mousePosition.X + Math.Abs(mousePosition.X) && node.Position.X + nodeSize.Width > mousePosition.X + Math.Abs(mousePosition.X))
            if (node.Position.Y < mousePosition.Y + Math.Abs(mousePosition.Y) && node.Position.Y + nodeSize.Height > mousePosition.Y + Math.Abs(mousePosition.Y))


                return node;
        MessageBox.Show("clicked");



    }
    return null;
}

它不起作用。我想光标有问题。我的想法是将节点的位置与鼠标的位置进行比较。 谢谢了很多!

1 个答案:

答案 0 :(得分:1)

我认为你朋友的代码是错的。这些if语句会更好。

if (node.Position.X < mousePosition.X && node.Position.X + nodeSize.Width > mousePosition.X)
    if (node.Position.Y < mousePosition.Y && node.Position.Y + nodeSize.Height > mousePosition.Y)

在此声明之前,您可能需要匹配位置坐标。我想,Cursor.Position在屏幕空间坐标中,但节点可能在客户端空间坐标中。这段代码可以使用。

mousePosition = PointToClient(mousePosition);