【问题标题】:WPF: Opacity and the MouseEnter EventWPF:不透明度和 MouseEnter 事件
【发布时间】:2011-03-18 11:29:28
【问题描述】:

作为图表的一部分,我正在绘制一些重叠的形状,每个形状都带有Opacity=0.5,如下所示:

<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");
  }

当用户用鼠标输入形状时,应该显示一些附加信息,但永远不会调用事件处理程序。

有没有办法为所有形状获取 MouseEnter 事件,而不仅仅是最上面的一个?

【问题讨论】:

    标签: c# wpf mouseevent opacity


    【解决方案1】:

    对于您的布局,只有最上面的矩形会引发 MouseEnter 事件。它与第一个矩形完全重叠。

    试试这个 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.");
                }
            }
    

    为此,您需要将两个矩形都订阅到 Rectangle_MouseEnter。

    【讨论】:

    • 是的,我注意到了。 =) 当用户进入位于其他区域之后的区域时,还有其他方法可以得到通知吗?
    • 恐怕没有... MouseEnter 和 MouseLeave 事件不会冒泡,只会在您放置光标的那个控件上引发。 msdn.microsoft.com/en-us/library/…
    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多