2012-12-03 45 views
0

我正在使用NAudio播放器,请参阅http://naudio.codeplex.com/wikipage?title=MP3。一切工作正常,但是当我编写一个显示当前时间和持续时间的trackbar时,甚至可以查找歌曲的任何位置,所以我用计时器以mainOutputStream.CurrentTime更新当前时间,但格式不好看, 然后我重新格式化它是这样的:C#NAudio Trackbar

string curTime = mainOutputStream.CurrentTime.ToString(); 
string[] format = curTime.Split(':'); 
format[2] = format[2].Remove(2); 
curTime = format[1] + format[2]; 

format[2] = format[2].Remove(2);始终返回错误。 似乎没有办法得到持续时间,甚至在时间跨度,但字节,但我不喜欢使用averageBytePerSecond或类似的东西,所以有无论如何做这些工作更简单,更好? 所有变量如上面的参考

谢谢。

编辑:问题解决了〜我用这个方法:
获取时间:

string duration = mainOutputStream.TotalTime.ToString("mm\\:ss"); 
trackPosition.Maximum = (int)mainOutputStream.TotalTime.TotalSeconds; 

获取当前时间:

string curTime = mainOutputStream.CurrentTime.ToString("mm\\:ss"); 
trackPosition.Value = (int)mainOutputStream.CurrentTime.TotalSeconds; 
+0

什么类型的对象是CURRENTTIME和它利润归还什么格式,你需要什么样的格式? –

+0

这是'timespan',我把它放到trackbar中,所以我需要'int'。 – giiYanJ

+0

秒的诠释? –

回答

1

试试这个:

string curTimeString = mainOutputStream.CurrentTime.ToString("mm\\:ss"); 
int curTimeSeconds = (int)mainOutputStream.CurrentTime.TotalSeconds; 

的第一个只有几分钟和几秒钟才能形成,如果你的音轨更大将不得不添加不同的格式。对

更多信息可以在这里找到:Timespan formatting

+0

CurrentTime.TotalSeconds是'double',并且有十进制后面,无论如何删除它? – giiYanJ

+0

opps,对不起,我忘了投为int,固定在 –

+0

以上哇,工作就像上帝! 持续时间部分如何? mainOutputStream.Length只给出字节,任何方式来计算持续时间,但不是平均字节/秒? 编辑:刚刚发现,有一个'TotalTime'对象,那里的时间跨度很好。 – giiYanJ