在我的表格中,我有一个小型媒体播放器,它非常基本,具有基本的功能 嵌套、上一个、播放、停止、音量增加和轨迹栏。 我可以通过这段代码拖动轨道栏来寻找这首歌:: (假设轨迹条的最大值为声音文件的总秒数)
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 正在一个线程中使用,而不是在创建它的线程中使用.. 我该如何解决这个问题?
我想将这段代码同时放在 MouseLeave
和 MouseEnter
事件中,但这毫无意义,因为它会在同一个线程上,应用程序会卡住。
如何让条形图自己移动?
最佳答案
您应该创建一个具有间隔或 1,000 毫秒的 WinForms Timer
,并在其 Tick
事件中更新轨迹栏。
关于C# winform,如何使轨迹条随着声音文件移动(增加其值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11761055/