C# winform,如何使轨迹条随着声音文件移动(增加其值)?

标签 c# winforms trackbar

在我的表格中,我有一个小型媒体播放器,它非常基本,具有基本的功能 嵌套、上一个、播放、停止、音量增加和轨迹栏。 我可以通过这段代码拖动轨道栏来寻找这首歌:: (假设轨迹条的最大值为声音文件的总秒数)

private void SeekBar_Scroll(object sender, EventArgs e)
{
   Player.Position = TimeSpan.FromSeconds(SeekBar.Value);
} 

但是我无法在播放音乐时让酒吧自己向前移动.. 我想出了这个主意:

假设我们有一首时长 90 秒的歌曲。 现在轨迹栏最大值为 100 所以: 100 --> 90 1 --> X X = 0.9 秒 这是条形刻度与轨道条值在每个刻度中应增加的值之间的间隔。这是我的代码:

while (SeekBar.Value < 100)
{
  System.Windows.Duration duration = Player.NaturalDuration;
  SeekBar.Value += duration.TimeSpan.Seconds / 100;
  Thread.Sleep(duration.TimeSpan.Seconds * 10);
}

现在我认为这应该在一个单独的线程中运行,对吗? 但问题是,当我这样做时,我收到一条烦人的消息,说 TrackBar 正在一个线程中使用,而不是在创建它的线程中使用.. 我该如何解决这个问题?

我想将这段代码同时放在 MouseLeaveMouseEnter 事件中,但这毫无意义,因为它会在同一个线程上,应用程序会卡住。

如何让条形图自己移动?

最佳答案

您应该创建一个具有间隔或 1,000 毫秒的 WinForms Timer,并在其 Tick 事件中更新轨迹栏。

关于C# winform,如何使轨迹条随着声音文件移动(增加其值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11761055/

相关文章:

c# backgoundworker 和 trackbar

c# - 为什么 Find() 方法返回一个数组?

c# - 用户控件上的设计和运行时绑定(bind)错误

winforms - 在 Winforms for Vista 中为 MessageBox.Show(...) 格式化消息的最佳实践

c# - 创建字体对话框。如何显示每种字体及其设计?

c# - 如何使用鼠标按住和释放检查 TrackBar 是否滑动

opencv - 一个回调的多个 slider

c# - 使用 UIAutomation 获取按钮的路径

c# - Prism 导航 : I can requestnavigate to only one particular view

javascript - 如何使用javascript清除asp.net复选框列表中的所有项目并添加新项目