检测在Canvas WPF中单击了哪个矩形

时间:2015-04-16 08:21:49

标签: wpf canvas click rectangles

我有一个WPF画布以编程方式填充了一系列矩形(比方说100,但每次都有不同的数字)。 我的问题是我需要检测用户点击了哪个矩形。 我想为每个矩形分配一个不同的唯一名称和每个矩形的相同事件“MouseLeftButtonDown”,但后来我不知道如何获得被点击的对象的名称。 任何人都可以帮助我吗?还有可能检查鼠标点击屏幕的哪个点,获取坐标然后计算哪个矩形围绕该点,但对于这样一个愚蠢的问题似乎太复杂了。 提前谢谢!

2 个答案:

答案 0 :(得分:0)

尝试使用canavas事件:

private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
      if (e.OriginalSource is Rectangle)
      {
        Rectangle ClickedRectangle = (Rectangle)e.OriginalSource;

        // Your work here I give y some actions ...
        ClickedRectangle.Opacity = 0.5;
        if (e.ClickCount == 2)
        {
          canvas.Children.Remove(ClickedRectangle);
        }
        else
        {
          isPressed = true;
          startPosition = e.GetPosition(canvas);
          ClickedRectangle.CaptureMouse();
        }
      }
    }

答案 1 :(得分:0)

如果所有矩形都绑定到OnMouseDown Event to Rectangle OnMouseDown函数,你可以按名称获取你的矩形:

private void Rectangle_OnMouseDown(object sender, MouseButtonEventArgs e)
    {
        var mouseWasDownOn = e.Source as FrameworkElement;
        if (mouseWasDownOn != null)
        {
            string elementName = mouseWasDownOn.Name;
            var myRectangle = (Rectangle)this.FindName(elementName);
        }
    }