WPF中Slider实时记录播放进度并且拖拽滑动Thumb实现播放进度的控制

罐装雪碧_Kris 2014-05-08 10:33:07
这个问题很多人都应该考虑过 不过我来说说我的解决方法吧!
就用MediaPlayer控件来举例:
前面的问题比较容易解决,就是用一个Timer利用Tick事件去不停的获取正在播放的多媒体文件的当前播放位置 。贴上代码:



然后后面的问题解决方案可能很多人会想到用Slider的ValueChanged事件去写 ,可是 这个拖拽并不是唯一一个触发ValueChanged事件的 ,在播放过程中Slider的Value属性一直在变化,很多人就看到了冲突。

这个问题我是这样解决的 ,其实也是很简单的 ,我们可以用MouseMove事件去写,不过有发现了问题,MouseMove事件也就是说只要你的鼠标放在Slider上就会触发,那只要我们的鼠标移动到了Slider上,就会出现和上面用ValueChanged事件写一样的冲突,所以我们还需要进一步确定 ,你这个拖拽是唯一的,可以控制拖放进度的事件,只需要在MouseMove事件内判断鼠标左键是否按下。贴上代码:

...全文
1869 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tfkiky 2015-11-30
  • 打赏
  • 举报
回复
引用 7 楼 iris1023 的回复:
[quote=引用 6 楼 liujiong63 的回复:] 设置一个标志位,在SLIDER的MOUSEDOWN中置为true,MOUSEUP事件中置为false。在SLIDER的VALUECHANGED事件中判断这个标志位是否为true来决定执行的操作。
我是不想通过拖拽Thumb 实现播放进度的控制 只是点击任意地方的进度条就可以跳转[/quote] 楼上的搞定了吗,我最近也碰到这个问题,求教求指导
海meili1023 2014-12-10
  • 打赏
  • 举报
回复
引用 6 楼 liujiong63 的回复:
设置一个标志位,在SLIDER的MOUSEDOWN中置为true,MOUSEUP事件中置为false。在SLIDER的VALUECHANGED事件中判断这个标志位是否为true来决定执行的操作。
我是不想通过拖拽Thumb 实现播放进度的控制 只是点击任意地方的进度条就可以跳转
Jeremy__Liu 2014-12-09
  • 打赏
  • 举报
回复
设置一个标志位,在SLIDER的MOUSEDOWN中置为true,MOUSEUP事件中置为false。在SLIDER的VALUECHANGED事件中判断这个标志位是否为true来决定执行的操作。
海meili1023 2014-12-09
  • 打赏
  • 举报
回复
请问一下 怎么能鼠标点击一下slider就能让视频播放进度跳转呢?
罐装雪碧_Kris 2014-05-24
  • 打赏
  • 举报
回复
引用 3 楼 zp062108112 的回复:
哦,楼主,我最近也碰到类似的问题,经过一番查找,系统提供的Slider下的PreviewMouseUp事件,应该也能提供差不多的作用。再次谢谢您的思路。
恩恩~~有帮助就好~~~
呆呆的洁洁 2014-05-23
  • 打赏
  • 举报
回复
哦,楼主,我最近也碰到类似的问题,经过一番查找,系统提供的Slider下的PreviewMouseUp事件,应该也能提供差不多的作用。再次谢谢您的思路。
呆呆的洁洁 2014-05-23
  • 打赏
  • 举报
回复
谢谢楼主,受教了~
罐装雪碧_Kris 2014-05-08
  • 打赏
  • 举报
回复


补上第一张图。

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧