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

问题描述

这个问题很多人都应该考虑过不过我来说说我的解决方法吧!就用MediaPlayer控件来举例:前面的问题比较容易解决,就是用一个Timer利用Tick事件去不停的获取正在播放的多媒体文件的当前播放位置。贴上代码:然后后面的问题解决方案可能很多人会想到用Slider的ValueChanged事件去写,可是这个拖拽并不是唯一一个触发ValueChanged事件的,在播放过程中Slider的Value属性一直在变化,很多人就看到了冲突。这个问题我是这样解决的,其实也是很简单的,我们可以用MouseMove事件去写,不过有发现了问题,MouseMove事件也就是说只要你的鼠标放在Slider上就会触发,那只要我们的鼠标移动到了Slider上,就会出现和上面用ValueChanged事件写一样的冲突,所以我们还需要进一步确定,你这个拖拽是唯一的,可以控制拖放进度的事件,只需要在MouseMove事件内判断鼠标左键是否按下。贴上代码:

解决方案

解决方案二:
补上第一张图。
解决方案三:
谢谢楼主,受教了~
解决方案四:
哦,楼主,我最近也碰到类似的问题,经过一番查找,系统提供的Slider下的PreviewMouseUp事件,应该也能提供差不多的作用。再次谢谢您的思路。
解决方案五:
引用3楼zp062108112的回复:

哦,楼主,我最近也碰到类似的问题,经过一番查找,系统提供的Slider下的PreviewMouseUp事件,应该也能提供差不多的作用。再次谢谢您的思路。

恩恩~~有帮助就好~~~
解决方案六:
请问一下怎么能鼠标点击一下slider就能让视频播放进度跳转呢?
解决方案七:
设置一个标志位,在SLIDER的MOUSEDOWN中置为true,MOUSEUP事件中置为false。在SLIDER的VALUECHANGED事件中判断这个标志位是否为true来决定执行的操作。
解决方案八:
引用6楼liujiong63的回复:

设置一个标志位,在SLIDER的MOUSEDOWN中置为true,MOUSEUP事件中置为false。在SLIDER的VALUECHANGED事件中判断这个标志位是否为true来决定执行的操作。

我是不想通过拖拽Thumb实现播放进度的控制只是点击任意地方的进度条就可以跳转
解决方案九:
引用7楼iris1023的回复:

Quote: 引用6楼liujiong63的回复:
设置一个标志位,在SLIDER的MOUSEDOWN中置为true,MOUSEUP事件中置为false。在SLIDER的VALUECHANGED事件中判断这个标志位是否为true来决定执行的操作。

我是不想通过拖拽Thumb实现播放进度的控制只是点击任意地方的进度条就可以跳转

楼上的搞定了吗,我最近也碰到这个问题,求教求指导

时间: 2024-11-01 00:07:01

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

asp.net中Wpf拖拽滑动效果示例

wpf其实支持拖拽是很简单的.使用drag事件或者自定义鼠标事件都是可以实现的. 今天分享一个用鼠标的点击和up事件实现的拖拽滑动效果. 首先在xaml中定义一个ScrollViewer.  代码如下 复制代码 <Window x:Class="Wpf拖拽滑动效果.MainWindow"  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  xmlns:x="http:

html中去掉textarea右侧滚动条和右下角拖拽

我们经常会把去掉html页面的滚动条了,通常如下 掉左右滚动条,保留上下滚动条:<body style="overflow-x:hidden;overflow-y:auto;"> 如果页面头部有:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 需要去掉该代码,或者改为

wpf-WPF中Slider如何对它进行绑定?比如绑定一个List&amp;amp;lt;string&amp;amp;gt;或者String[]

问题描述 WPF中Slider如何对它进行绑定?比如绑定一个List<string>或者String[] 比如,一个List或者String[]里面是从小到大的没有特定规律的String类型,那么Slider的Value就必须在 这个List或者String[]的里面的数据进行滑动,每单击或者滑动一次它的值只能是List或者String[]里面的值,请问各位大神,如何实现?多谢! 解决方案 Slider不需要绑定,直接取你的List的Count作为MaxValue,当Slider改变的时候,如

panel-C# winform 如何在Panel控件的拖拽DragDrop事件中获取Label对象

问题描述 C# winform 如何在Panel控件的拖拽DragDrop事件中获取Label对象 在C# winform中,在form窗体中有四个Panel控件(panel1.panel2.panel3.panel4)以及三个Label控件(label1.label2.label3). 目前需要将任意一个Label控件对象拖入任意一个Panel控件中.一旦松开鼠标,那么拖拽过程结束.此时应当处理Panel控件的DragDrop事件. 请问,在Panel控件的DragDrop事件中,如何获取La

C# winform 如何在Panel控件的拖拽DragDrop事件中获取Label对象

问题描述 C# winform 如何在Panel控件的拖拽DragDrop事件中获取Label对象 在C# winform中,在form窗体中有四个Panel控件(panel1.panel2.panel3.panel4)以及三个Label控件(label1.label2.label3). 目前需要将任意一个Label控件对象拖入任意一个Panel控件中.一旦松开鼠标,那么拖拽过程结束.此时应当处理Panel控件的DragDrop事件. 请问,在Panel控件的DragDrop事件中,如何获取La

zedgraph-请问在wpf中zedGraph怎么实现实时显示当前鼠标落点的x,y的值?

问题描述 请问在wpf中zedGraph怎么实现实时显示当前鼠标落点的x,y的值? 用户在曲线显示区块移动鼠标时,在界面右边的点号地址文 本框和最大值及时刻文本框中间的文本框,其内容会发生变化, 它表示的是此点号在某个时间点的记录值.实在是找不到属性了,方法的话用cursorchanged还是mouse move??谢谢大家.

WPF中自定义漂亮的进度条

wpf中自带的进度条是这个样子德. 在2003中这个进度条的样子就会变得非常难看. 在wpf中您可以自己制作任意样式的进度条.如下图: UserControl.xaml 用户控件 <Grid x:Name="LayoutRoot" Background="Transparent" HorizontalAlignment="Center" VerticalAlignment="Center"> <Grid.Re

Wpf中MediaElement循环播放

原文:Wpf中MediaElement循环播放       前一段时间做了一个项目,里面牵涉到媒体文件的循环播放问题,在网上看了好多例子,都是在xaml中添加为MediaElement添加一个TimeLine,不符合我的项目需求,就自己想了一个办法,基本的思路就是在媒体播放完毕后再次Play一下就OK了,废话不多说,首先Show一下我的代码吧:    写一个方法用来动态创建一个MediaElement:这里的ScreenModel是我创建的一个类,大家根据需要可以修改    MediaEleme

在wpf中如何让MediaElement的视频循环播放

原文:在wpf中如何让MediaElement的视频循环播放 MediaElement原始的播放是只播放一遍:如何设置让MediaElement播放 的视频或者音频循环播放,解决如下: 修改MediaElement模版  <MediaElement  Name="myMediaElement" Margin="13,35,14,0"  Height="100" VerticalAlignment="Top">