WPF Button MouseDown事件
2021/6/26 6:58:01
本文主要是介绍WPF Button MouseDown事件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Button的MouseDown事件
WPF的Button控件,鼠标点击时,MouseDown事件没有触发。
经确认,Button的MouseDown被内部处理了。下面是基类ButtonBase的部分代码:
Mouse的其它事件也是如此:
官网的说明:
所以,MouseDown、MouseUp、MouseLeftButtonDown、MouseLeftButtonUp、MouseMove、MouseEnter、MouseLeave,Button的这些冒泡事件是内部已经处理的。
注:屏蔽Mouse事件的同时,按钮添加了Click事件和按压状态ButtonBase.IsPressed。
添加Button的MouseDowng事件
如何把Button的MouseDown事件添加回来?官网也给出了指导:
我用第二个方案AddHandler,这么处理的:
1 button.AddHandler(UIElement.MouseUpEvent, new MouseButtonEventHandler(Button_MouseUp), true); 2 button.AddHandler(UIElement.MouseDownEvent, new MouseButtonEventHandler(Button_MouseDown), true);
1 private void Button_MouseDown(object sender, MouseButtonEventArgs e) 2 { 3 4 } 5 private void Button_MouseUp(object sender, MouseButtonEventArgs e) 6 { 7 8 }
要用MouseButtonEventHandler,用MouseEventHandler会提示不匹配异常。对应的EventArgs则用MouseButtonEventArgs
至于原因,应该是,MouseDownEvent事件的注册来源本来就是MouseButton。如下是UIElement鼠标路由对应的Mouse相关附加事件:
1 /// <summary> 2 /// 标识 <see cref="E:System.Windows.Input.Mouse.MouseDown" /> 附加事件。 3 /// </summary> 4 /// <returns> 5 /// <see cref="E:System.Windows.Input.Mouse.MouseDown" /> 附加事件的标识符。 6 /// </returns> 7 public static readonly RoutedEvent MouseDownEvent = EventManager.RegisterRoutedEvent("MouseDown", RoutingStrategy.Bubble, typeof (MouseButtonEventHandler), typeof (Mouse));
这篇关于WPF Button MouseDown事件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-08如何用关键链方法突破项目管理瓶颈?
- 2025-01-08电商人必看!6 款提升团队协作与客户满意度软件!
- 2025-01-08电商团队管理混乱?快用这 6 款软件优化协作流程!
- 2025-01-08短剧制作效率低?试试这5款任务管理工具
- 2025-01-08高效应对电商高峰,6 款团队协作软件大揭秘!
- 2025-01-08为什么外贸人都爱上了在线协作工具?
- 2025-01-08提升工作效率,从这些任务管理工具开始
- 2025-01-08新年电商订单暴增,必备的 6 款可视化协作办公软件有哪些?
- 2025-01-08短剧制作经理必备技能与工具全解析
- 2025-01-08在线协作让年货大促轻松应对!