WPF: Opacity and the MouseEnter Event

做~自己de王妃 提交于 2019-12-10 22:56:03

问题


As part of a diagram, I am drawing a few overlapping Shapes, each with Opacity=0.5, like here:

<Grid>
    <Rectangle Fill="Blue" Opacity="0.5" MouseEnter="Rectangle_MouseEnter" />
    <Rectangle Fill="Red" Opacity="0.5" />
</Grid>


private void Rectangle_MouseEnter(object sender, MouseEventArgs e)
  {
     MessageBox.Show("Entered");
  }

When the user enters the shape with the mouse, some additional information should be displayed, but the event handler never gets called.

Is there a way to get MouseEnter events for all Shapes, instead of just the topmost one?


回答1:


With your layout only the topmost rectangle will raise MouseEnter event. It fully overlaps the first rectangle.

Try this code for eventHandler:

private void Rectangle_MouseEnter(object sender, MouseEventArgs e)
        {
            if (sender != grid.Children[0])
            {
                var rect = (grid.Children[0] as Rectangle);
                if (rect != null) rect.RaiseEvent(e);
            }
            else
            {
                MessageBox.Show("Entered.");
            }
        }

For this works you need to subscribe both rectangles to Rectangle_MouseEnter.



来源:https://stackoverflow.com/questions/3290855/wpf-opacity-and-the-mouseenter-event

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!