我正在使用WMPLib在c#winforms中構建MP3播放器。我有允許用戶將MP3文件上傳到listbox1的代碼。我希望用戶能夠隨機播放listbox1中的項目,以便隨機播放項目(MP3)。目前,我有代碼混洗listbox1中的項目,但初始索引中的項目播放。我希望這是有道理的。c#WMPLib隨機播放列表框中的MP3文件
這是我的代碼,供用戶上傳他們的文件。
private void uploadSongs()
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
files = openFileDialog1.SafeFileNames;
paths = openFileDialog1.FileNames;
for (int i = 0; i < files.Length; i++)
{
filelist.Items.Add(files[i]);
}
}
}
這裏是洗牌爲ListBox項目代碼:
private void shuffleBttn_Click(object sender, EventArgs e)
{
ListBox.ObjectCollection list = fielist.Items;
Random random = new Random();
int w = list.Count;
filelist.BeginUpdate();
while (w > 1)
{
w--;
int u = random.Next(w + 1);
object value = list[u];
list[u] = list[w];
list[w] = value;
}
filelist.EndUpdate();
filelist.Invalidate();
}
我加入以下代碼播放列表到shuffleBttn_Click
WMPLib.IWMPPlaylist playlist = WMPPlayer.playlistCollection.newPlaylist("myplaylist");
WMPLib.IWMPMedia media;
foreach (object item in filelist.Items)
{
media = WMPPlayer.newMedia((string)item);
playlist.appendItem(media);
}
WMPPlayer.currentPlaylist = playlist;
WMPPlayer.Ctlcontrols.play();
注:我使用的 「文件列表」,而不是ListBox1中。 – gsanchez