首页 文章

通过画布形状向上冒泡

提问于
浏览
0

假设已经创建了一个形状并将其添加到画布中 . 可以添加一个事件处理程序,让我们说左鼠标按钮事件如下:

System.Windows.Shapes.Rectangle r = new Rectangle(...);
r += r_MouseLeftButtonUp;
// Maybe other event handlers added...
Canvas.Children.Add(r);

所以这很有效 . 除非在与第一个形状重叠的同一画布上创建另一个形状,否则将触发事件处理程序 . 有没有办法通过鼠标光标位置下的所有形状启动mouseLeftButtonUp事件?

1 回答

  • 0

    只要有可用于任何形状的可点击部分,重叠就应该起作用 . 如果这里的问题是由于其上面的另一个形状(不再可点击)而变得隐藏的形状,您可以使用Canvas调用您的处理程序 .

    <Canvas UIElement.MouseLeftButtonUp="Canvas_MouseLeftButtonUp">
        <Rectangle x:Name="rec1" Height="50" Width="50" Canvas.Left="0" Canvas.Top="0" Fill="Aqua"/>
        <Rectangle x:Name="rec2" Height="50" Width="50" Canvas.Left="25" Canvas.Top="25" Fill="LightBlue"/>
     </Canvas>
    

    当您左键单击Canvas时,这将设置EventHandler . 我们可以在画布的每个Shape子元素上调用处理程序 .

    private void Canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
     {
            Canvas c = sender as Canvas;
            foreach (Rectangle r in c.Children)
            {
               // Invoke the handler here...
            }
      }
    

相关问题