IsMouseOver 和MouseEnter\MouseLeave 事件
2017-02-22 16:16
489 查看
在界面程序中IsMouseOver 属性用来判断鼠标是否在某个界面元素上悬停。
如果当一个界面元素在逻辑树中被另外一个元素包含,当鼠标同时停在两个元素上的时候,两个元素的IsMouseOver 都是true,无论下面的元素是否被遮住。
当IsMouseOver 属性从false变为true的时候会触发UIElement 的MouseEnter 事件,当IsMouseOver 属性从true变为 false的时候会触发UIElement 的MouseLeave 事件。
下面的例子中,我们在一个窗口里放一个包含有一个按钮的StackPanel ,并且当IsMouseOver 属性发生改变的时候修改对应的Label的内容。同时注册他们的MouseEnter 和MouseLeave 事件。
当鼠标进入窗口的时候,窗口的IsMouseOver 属性变为true,并触发窗口的MouseEnter 事件
当鼠标进入到StackPanel的时候,StackPanel的IsMouseOver 属性变为true,并触发StackPanel的MouseEnter事件。而窗口的IsMouseOver属性依然为true。
当鼠标移动到按钮上的时候,按钮的IsMouseOver 属性变为true,并触发MouseEnter事件,而窗口和StackPanel的IsMouseOver属性依然为true。
当将鼠标移出按钮,StackPanel和窗口的时候,他们的IsMouseOver 属性变为false,并且都触发了MouseLeave 事件。
*****************************************译者注****************************************
与IsMouseOver 属性相关的还有IsMouseDirectlyOver 属性。IsMouseDirectlyOver 属性表示鼠标是否直接悬停在控件上方,中间没有控件遮挡。例如上面的例子中,如果鼠标在按钮上方悬停,他们的IsMouseOver 属性都是true,按钮的IsMouseDirectlyOver 属性为true,StackPanel和窗口的IsMouseDirectlyOver
属性为false。
原文地址:https://wpf.2000things.com/2012/10/08/663-how-ismouseover-works-for-nested-elements/
如果当一个界面元素在逻辑树中被另外一个元素包含,当鼠标同时停在两个元素上的时候,两个元素的IsMouseOver 都是true,无论下面的元素是否被遮住。
当IsMouseOver 属性从false变为true的时候会触发UIElement 的MouseEnter 事件,当IsMouseOver 属性从true变为 false的时候会触发UIElement 的MouseLeave 事件。
下面的例子中,我们在一个窗口里放一个包含有一个按钮的StackPanel ,并且当IsMouseOver 属性发生改变的时候修改对应的Label的内容。同时注册他们的MouseEnter 和MouseLeave 事件。
<Window Name="win1"> <StackPanel Name="sp1" Background="Pink" Margin="20,0"> <Button Name="btn1" Content="Click Me" HorizontalAlignment="Center" Padding="10,5"/> </StackPanel> </Window>
当鼠标进入窗口的时候,窗口的IsMouseOver 属性变为true,并触发窗口的MouseEnter 事件
当鼠标进入到StackPanel的时候,StackPanel的IsMouseOver 属性变为true,并触发StackPanel的MouseEnter事件。而窗口的IsMouseOver属性依然为true。
当鼠标移动到按钮上的时候,按钮的IsMouseOver 属性变为true,并触发MouseEnter事件,而窗口和StackPanel的IsMouseOver属性依然为true。
当将鼠标移出按钮,StackPanel和窗口的时候,他们的IsMouseOver 属性变为false,并且都触发了MouseLeave 事件。
*****************************************译者注****************************************
与IsMouseOver 属性相关的还有IsMouseDirectlyOver 属性。IsMouseDirectlyOver 属性表示鼠标是否直接悬停在控件上方,中间没有控件遮挡。例如上面的例子中,如果鼠标在按钮上方悬停,他们的IsMouseOver 属性都是true,按钮的IsMouseDirectlyOver 属性为true,StackPanel和窗口的IsMouseDirectlyOver
属性为false。
原文地址:https://wpf.2000things.com/2012/10/08/663-how-ismouseover-works-for-nested-elements/
相关文章推荐
- 事件mouseover/out和mouseenter/leave
- 对mouseout/mouseleave,mouseover/mouseenter事件的解析
- 为控件创建MouseEnter/MouseLeave事件
- 为控件创建MouseEnter/MouseLeave事件
- 捕获按钮离开事件.Simulate MouseEnter and MouseLeave events
- 鼠标移入和移出事件mouseenter VS mouseover 、mouseleave VS mouseout
- 跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
- 【WIN32之旅】给托盘图标加上MOUSE_ENTER、MOUSE_HOVER、MOUSE_LEAVE消息
- mouseover/out和mouseenter/leave的区别及用法
- mouseover mouseout mouseenter mouseleave解释
- jquery的hover mouseover mouseout mouseenter mouseleave的区别
- mouseover mouseenter mouseout mouseleave
- jquery的mouseover/mouseleave和mouseenter/mouseout区别,横向多级滑动菜单
- web-前端之事件冒泡,其中包括(onmousemove,onmouseover,onmouseout,onmouseleave,onmouseup,onmouseentter)可用于一些计数小游戏
- 鼠标浮动到表格的某行 背景颜色变化[mouseover mouseout 以及mouseenter mouseleave]
- 事件冒泡onmouse(move、out、over、enter、leave)
- 鼠标浮动到表格的某行 背景颜色变化[mouseover mouseout 以及mouseenter mouseleave]
- 跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition
- hover!= mouseover+mouseout。但hover=mouseenter + mouseleave