鼠标事件运行多次
Mouse Event Runs Multiple Times
在我的程序中它是一个网格内的矩形
<Grid x:Name="mainGrid" Background="Transparent" MouseLeftButtonDown="mainGrid_MouseLeftButtonDown">
<Rectangle x:Name="rectangle" MouseEnter="rectangle_MouseEnter" Focusable="True" MouseLeftButtonDown="rectangle_MouseLeftButtonDown" MouseLeave="rectangle_MouseLeave" Fill="#FFF4F4F5" Margin="2" Stroke="Transparent"/>
</Grid>
和鼠标左键按下事件:
private void rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Debug.WriteLine("mouse left button down on rectangle");
}
private void mainGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Debug.WriteLine("mouse left button down on mainGrid");
}
当鼠标按钮在矩形上按下时输出:
mouse left button down on rectangle
mouse left button down on mainGrid
我只想在矩形内单击时触发矩形鼠标事件,在矩形外单击时触发网格鼠标事件
我该怎么做?
MouseLeftButtonDown
是 bubbling event 这意味着它将从原始元素上升到可视化树。您可以通过在 rectangle_MouseLeftButtonDown
中将 Handled
设置为 true 来限制处理程序的执行
private void rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
Debug.WriteLine("mouse left button down on rectangle");
}
在我的程序中它是一个网格内的矩形
<Grid x:Name="mainGrid" Background="Transparent" MouseLeftButtonDown="mainGrid_MouseLeftButtonDown">
<Rectangle x:Name="rectangle" MouseEnter="rectangle_MouseEnter" Focusable="True" MouseLeftButtonDown="rectangle_MouseLeftButtonDown" MouseLeave="rectangle_MouseLeave" Fill="#FFF4F4F5" Margin="2" Stroke="Transparent"/>
</Grid>
和鼠标左键按下事件:
private void rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Debug.WriteLine("mouse left button down on rectangle");
}
private void mainGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Debug.WriteLine("mouse left button down on mainGrid");
}
当鼠标按钮在矩形上按下时输出:
mouse left button down on rectangle
mouse left button down on mainGrid
我只想在矩形内单击时触发矩形鼠标事件,在矩形外单击时触发网格鼠标事件
我该怎么做?
MouseLeftButtonDown
是 bubbling event 这意味着它将从原始元素上升到可视化树。您可以通过在 rectangle_MouseLeftButtonDown
Handled
设置为 true 来限制处理程序的执行
private void rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
Debug.WriteLine("mouse left button down on rectangle");
}