几个mouse事件的特点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了几个mouse事件的特点相关的知识,希望对你有一定的参考价值。

参考技术A 1.mouseover() : 如果鼠标指针穿过任何子元素,同样会触发 mouseover 事件。

注:比如div使用了mouseover 事件,鼠标在进入div到span再出去,会触发3次mouseover 事件;

2.mouseenter() : 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。

注:比如div使用了mouseenter 事件,鼠标在进入div到span再出去,会触发1次mouseenter事件;

3.mouseout() : 如果鼠标指针离开任何子元素,同样会触发 mouseout 事件。

注:比如div使用了mouseout 事件,鼠标在进入div到span再出去,会触发3次mouseout 事件;

4.mouseleave() : 只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。

注:比如div使用了mouseleave 事件,鼠标在进入div到span再出去,会触发1次mouseleave 事件;

所以它们的区别就是mouseover和mouseout拥有冒泡属性,将 mouseout() 换成 mouseleave() 即可!

判断Mouse事件源类型

  //鼠标事件源类型
public enum MouseEventSource { Mouse, Pen, Touch } /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); inkcv.PreviewMouseDown += Inkcv_PreviewMouseDown; inkcv.PreviewMouseMove += Inkcv_PreviewMouseMove; inkcv.PreviewMouseUp += Inkcv_PreviewMouseUp; } private void Inkcv_PreviewMouseUp(object sender, MouseButtonEventArgs e) { var s = GetMouseEventSource(); result.Text = "mouse up,Source: "+ s.ToString(); } private void Inkcv_PreviewMouseMove(object sender, MouseEventArgs e) { if (e.LeftButton==MouseButtonState.Pressed) { result.Text ="mouse move,Source: "+ GetMouseEventSource().ToString(); } } private void Inkcv_PreviewMouseDown(object sender, MouseButtonEventArgs e) { var s = GetMouseEventSource(); result.Text = "mouse previewdown,Source: "+ s.ToString(); } [DllImport("user32.dll")] private static extern uint GetMessageExtraInfo(); public static MouseEventSource GetMouseEventSource() { uint extra = GetMessageExtraInfo(); bool isTouchOrPen = ((extra & 0xffffff00) == 0xff515700); if (!isTouchOrPen) return MouseEventSource.Mouse; bool isTouch = ((extra & 0x00000080) == 0x00000080); return isTouch ? MouseEventSource.Touch : MouseEventSource.Pen; } }

 


以上是关于几个mouse事件的特点的主要内容,如果未能解决你的问题,请参考以下文章

微搭低代码开发指南-事件处理

鼠标mouse事件

Java_多态

敏捷开发的几个特点

判断Mouse事件源类型

MOUSE_WHEEL 在触发之前是不是有最小增量值?