Ich arbeite in einem kleinen Audio-Player. Sie wissen, mit den einfachsten Sachen und Funktionen.Kann nicht Audio-Position mit Trackbar in C#
Ich habe ein Problem beim Ändern des Trackbar-Wertes (Scrollen), diese Trackbar zeigt die aktuelle Audio-Position an.
Wenn ich den Schieberegler der Trackbar ziehe, sollte sich die Audio-Position ändern. Ich verwende die CSCore Audio Library. Dies ist der Code, den ich verwende, um die aktuelle Position der Audio-Wiedergabe zu aktualisieren:
private void ProgressTimerTick(object sender, EventArgs e)
{
SongProgressTrackbar.MaxValue = (int)audioPlayer.Length.TotalMilliseconds;
SongProgress.Value = (int)audioPlayer.Position.TotalMilliseconds;
}
Das funktioniert perfekt ohne Probleme.
Aber ...
private void SongProgressTrackbar_Scroll(object sender, ScrollEventArgs e)
{
Timespan newPos = new Timespan(SongProgressTrackbar.Value);
audioPlayer.Position = newPos;
}
Was hier passiert, ist, dass die Audiosignale an den Start gehen wieder, wenn das Ereignis ausgelöst wird, insteqd die Position zu ändern, wo ich in der trackbar klicken, es beginnt nochmal.
Also, was habe ich falsch geschrieben? Ich habe versucht, das ValueChanged Event zu verwenden, aber das bringt nur das Audio in Position 0:00. Wie gesagt, der TimerTick funktioniert. Aber immer, wenn ich die Trackleiste scrolle, beginnt das Audio wieder von vorne.
Hoffe jemand kann mir helfen, dieses Problem zu lösen. Vielen Dank im Voraus - CCB
Sie haben ein offensichtliches Problem mit der Einheitenumwandlung, jetzt stellen Sie die Zeit in Einheiten von 100 Nanosekunden ein. Schließen Sie genug bis 0. Verwenden Sie stattdessen TimeSpan.FromMilliseconds(). –
Danke Hans! TimeSpan.FromMilliseconds hat funktioniert! Bitte poste deinen Kommentar als Lösung, um ihn zu markieren. – ChrisCreateBoss