首页 > 其他分享 >IsMouseOver&MouseEnter&MouseLeave

IsMouseOver&MouseEnter&MouseLeave

时间:2024-04-06 19:13:51浏览次数:25  
标签:MouseLeave 控件 鼠标 StackPanel IsMouseOver MouseEnter

由于WPF中的内容控件和布局控件内可以嵌套其他控件,所以在逻辑树可以无限嵌套。

<Window>
	<StackPanel>
		<Button Margin="30"/>
	</StackPanel>
</Window>

鼠标在Button上时,Window、StackPanel、Button的IsMouseOver都是True.
鼠标在Button外面的Margin上时,Window、StackPanel的IsMouseOver都是True,Button是false.
鼠标进入Window,Window的IsMouseOver变成true,同时触发MouseEnter事件,进而鼠标再进入StackPanel,StackPanel的IsMouseOver变成true,同时再次触发MouseEnter事件。鼠标退出时,过程相反。
MouseEnter和MouseLeave是直接路由事件。
MouseEnter、MouseLeave和IsMouseOver是同步的,只要IsMouseOver被设置成true就会触发MouseEnter,false时会触发MouseLeave;同样的,只要执行了MouseEnter,其IsMouseOver会被设置成true,只要执行了MouseLeave,其IsMouseOver也会被设置成false。
有时候鼠标放置到某些控件上,如StackPanel,其IsMouseOver并不会变成true,原因是Background不能是NULL,可以设置成Transparent。
如果作为外部控件的StackPanel的Background是NULL,刚进入StackPanel时,并不会触发MouseEnter事件,IsMouseOver也不会是True,但是如果其Content或Children有控件,进入内部控件时,会先触发内部控件的MouseEnter事件,紧接着会触发外部控件的MouseEnter.

标签:MouseLeave,控件,鼠标,StackPanel,IsMouseOver,MouseEnter
From: https://www.cnblogs.com/euvio/p/18117761

相关文章

  • 为什么不使用mouseenter和mouseleave
    为什么不使用mouseenter和mouseleave之所以不总是首选mouseenter和mouseleave,是因为它们在某些场景下可能不如mouseover和mouseout通用,尤其是在需要处理包含复杂嵌套结构的组件时,有时候开发者会更关心鼠标在整个组件及其子元素范围内的进出行为,这时mouseover和mouseout可能是更......
  • MouseLeave MouseOut MouseEnter MouseOver
    mouseenter事件的作用与CSS伪类:hover非常相似。MouseLeave:MouseEnter:当鼠标在一个元素本身或者其子元素上移动时,mouseover事件在该元素上触发。MouseOut:MouseOver:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/mouseover_event......
  • mouseover 和mouseenter的区别
    一、相同点都是鼠标经过事件二、不同点mouseover有冒泡效果,mouseenter没有冒泡推荐使用mouseenter,因为没有冒泡同理还有mouseover和mouseleavemouseout有冒泡mouseleave没有冒泡,推荐使用mouseleave鼠标事件总结mouseover(鼠标经过),mouseout(鼠标离开)是有冒泡效......
  • mouseenter和mouseover的区别(面试题常问)
    mouseenter和mouseover的区别(面试题常问)mouseenter鼠标事件当鼠标移动到元素上时就会触发mouseenter事件类似mouseover,它们两者之间的差别是mouseover鼠标经过自身盒......
  • JavaScriptDOM的一些方法和事件笔记:className、classList、setInterval、click、mouse
    className():替换原有类classList.add():添加类classList.remove():删除类classList.toggle():切换类setInterval(回调函数,毫秒数):间歇性定时器click:点击事件mousemove:......