none
关于PointerExited事件 RRS feed

  • 问题

  • 代码如下, 我想接收鼠标离开StackPanel 的消息, 所以添加了代码PointerExited="StackPanel_PointerExited_1", 在调试的时候,我发现每次鼠标离开StackPanel 里面的Rectangle的时候, 都会触发PointerExited消息, 怎么让我能忽略Rectangle的PointerExited消息, 而接收到StackPanel的PointerExited消息呢???

    <StackPanel Orientation="Vertical"  PointerExited="StackPanel_PointerExited_1">
                <Rectangle Fill="#40FFFFFF" Width="40" Height="99" RadiusX="5" RadiusY="5"
                                       VerticalAlignment="Top" Margin="0, 2"/>
                <Rectangle Fill="#40FFFFFF" Width="40" Height="99" RadiusX="5" RadiusY="5"
                                   VerticalAlignment="Top" Margin="0, 2"/>
                <Rectangle Fill="#40FFFFFF" Width="40" Height="99" RadiusX="5" RadiusY="5"
                                   VerticalAlignment="Top" Margin="0, 2"/>
            </StackPanel>



    2012年8月24日 9:33

答案

  • 那是因为你没有给你的StackPanel指定一个背景,所以他就不响应处理Pointer事件,你至少给他一个透明的背景,显示地写出来。

            <StackPanel Width="45" Height="310" Background="Transparent" Orientation="Vertical"  PointerExited="StackPanel_PointerExited_1">
                <Rectangle Fill="#40FFFFFF" Width="40" Height="99" RadiusX="5" RadiusY="5"
                                       VerticalAlignment="Top" Margin="0, 2"/>
                <Rectangle Fill="#40FFFFFF" Width="40" Height="99" RadiusX="5" RadiusY="5"
                                   VerticalAlignment="Top" Margin="0, 2"/>
                <Rectangle Fill="#40FFFFFF" Width="40" Height="99" RadiusX="5" RadiusY="5"
                                   VerticalAlignment="Top" Margin="0, 2"/>
            </StackPanel>


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 donarlee 2012年8月28日 7:35
    2012年8月27日 8:37
    版主

全部回复

  • private void Rectangle_PointerExited_1(object sender, PointerRoutedEventArgs e)
            {
                e.Handled = false;
            }

    试试把rectangle的PointerExited事件中不消耗这个事件,如上;
    2012年8月24日 11:44
  • 谢谢, 我如你所说添加了Rectangle的PointerExited消息的响应:

    private void Rectangle_PointerExited_1(object sender, PointerRoutedEventArgs e)

    {

    e.Handled = false;

    }

    e.Handled = false的时候Rectangle和StackPanel 都可以收到PointerExited消息, e.Handled = true的时候Rectangle收的到,StackPanel 就收不到了,

    我只想知道鼠标离开StackPanel的事件

    • 已编辑 donarlee 2012年8月27日 1:37 修改
    2012年8月27日 1:36
  • 那是因为你没有给你的StackPanel指定一个背景,所以他就不响应处理Pointer事件,你至少给他一个透明的背景,显示地写出来。

            <StackPanel Width="45" Height="310" Background="Transparent" Orientation="Vertical"  PointerExited="StackPanel_PointerExited_1">
                <Rectangle Fill="#40FFFFFF" Width="40" Height="99" RadiusX="5" RadiusY="5"
                                       VerticalAlignment="Top" Margin="0, 2"/>
                <Rectangle Fill="#40FFFFFF" Width="40" Height="99" RadiusX="5" RadiusY="5"
                                   VerticalAlignment="Top" Margin="0, 2"/>
                <Rectangle Fill="#40FFFFFF" Width="40" Height="99" RadiusX="5" RadiusY="5"
                                   VerticalAlignment="Top" Margin="0, 2"/>
            </StackPanel>


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 donarlee 2012年8月28日 7:35
    2012年8月27日 8:37
    版主
  • 是的是的,原来一要指定背景才可以

    2012年8月28日 7:35