在画布形状中出现气泡事件
本文关键字:气泡 事件 布形状 | 更新日期: 2023-09-27 18:25:25
让我们假设已经创建了一个形状并将其添加到画布中。可以添加一个事件处理程序,比如说像这样的鼠标左键事件:
System.Windows.Shapes.Rectangle r = new Rectangle(...);
r += r_MouseLeftButtonUp;
// Maybe other event handlers added...
Canvas.Children.Add(r);
所以这很有效。除非在与第一个形状重叠的同一画布上创建了另一个形状,否则会触发事件处理程序。有什么方法可以通过鼠标光标位置下的所有形状触发mouseLeftButtonUp事件吗?
只要有可点击的部分可用于任何形状,重叠就应该有效。如果这里的问题是因为上面的另一个形状(不再可单击)而隐藏的形状,则可以使用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>
这将在您左键单击画布时设置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...
}
}