如何在Slider中使用MouseLeftButtonDown事件

MouseLeftButtonDown和MouseLeftButtonUp是两个经常同时使用的事件,最常用到的恐怕就是处理鼠标拖动,这种时候需要在Down事件中CaptureMouse,而在Up事件中Release。但是我在对一个继承Slider的控件这么做的时候却发现MouseLeftButtonUp事件可以正常触发,而MouseLeftButtonDown怎么也不触发。我开始以为是我的其他哪个代码将其捕获了,经人提示,发现原来Slider不支持该事件——同样的还有Button也不支持此事件。原因是Slider在点击中间的滑块(Thumb)和两边的空白处(RepeatButton)的时候该鼠标事件会被吃掉。

查资料后找到两个方法:

1、使用PreviewMouseDown事件代替,该事件发生于MouseLeftButtonDown发生之前,与之相应的还有PreviewMouseUp事件。网上反映该事件可行,不过我没有试过,因为该事件只在WPF中有,Silverlight不支持该事件。

2、使用AddHandler方法,具体代码为:

_globalProgressSlider.AddHandler(Slider.MouseLeftButtonDownEvent, new MouseButtonEventHandler(Slider_MouseLeftButtonDown), true);

注意第三个参数必须是true,它表示你无论如何也要接收这个事件,即使这个事件已经被标记为Handled。这种方法只能在CS文件中写,在xaml中是无法做到的。

posted @   小林野夫  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 欧阳的2024年终总结,迷茫,重生与失业
· 在 .NET 中使用 Tesseract 识别图片文字
· Bolt.new 30秒做了一个网站,还能自动部署,难道要吊打 Cursor?
· 史上最全的Cursor IDE教程
· 关于产品设计的思考
历史上的今天:
2022-06-06 【C# 数据结构】图(Graph)开篇
原文链接:https://www.cnblogs.com/cdaniu/
点击右上角即可分享
微信分享提示