自动播放列表框中的下一项
本文关键字:一项 播放列表 | 更新日期: 2023-09-27 18:33:28
>我正在制作一个小型媒体播放器,我将媒体文件添加到列表框中,该列表框用作mediaelement的播放列表。当我单击列表框中的某个项目时,它开始播放。我想做的是使mediaelement在当前结束后自动开始播放列表框中的下一首歌曲/视频。
以下是我将歌曲添加到列表框的方法:
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = true;
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
foreach (string file in ofd.FileNames)
{
FileInfo fileName = new FileInfo(file);
listBox.Items.Add(fileName);
}
}
这是我单击列表框中的项目并开始播放的方法
private void Button_Click(object sender, RoutedEventArgs e)
{
System.Windows.Controls.Button prevButton = player.Tag as System.Windows.Controls.Button;
System.Windows.Controls.Button button = sender as System.Windows.Controls.Button;
FileInfo fileInfo = button.DataContext as FileInfo;
// If a file is playing, stop it
if (prevButton != null)
{
player.Tag = null;
player.Stop();
prevButton.Background = Brushes.White;
// if the one thats playing is the one that was clicked -> don't play it
if (prevButton == button)
return;
}
// Play the one that was clicked
player.Tag = button;
player.Source = new Uri(fileInfo.FullName);
player.Play();
}
订阅 MediaElement 或 MediaPlayer 的 MediaEnd 事件,然后从列表框中选取下一项。
编辑
如何选择下一项:
- 当前项的索引位于列表框的 选定索引 属性中
- 您可以通过将 1 添加到 SelectedIndex 并检查索引是否仍在范围内来获取下一项 将新索引
- 存储在一个变量中,该变量将保留新索引,直到播放完该项或直接更改 SelectedIndex;这将更改 SelectedItem 并移动 ListBox 中的选定内容
下面的代码尚未由编译器检查!
private int currentSongIndex = -1;
void Player_MediaEnded(object sender, EventArgs e)
{
if(currentSongIndex == -1)
{
currentSongIndex = listBox.SelectedIndex;
}
currentSongIndex++;
if(currentSongIndex < listBox.Items.Count)
{
player.Play(listBox.Items[currentSongIndex]);
}
else
{
// last song in listbox has been played
}
}