我正在建立一个音乐播放器,因此我选择使用Window Media Player库: 现在我卡住了'我希望在listBox中显示歌曲的名字并实时更改歌曲,但我不知道怎么回事。 我存储了一个文件夹中的歌曲,所以当音乐播放器运行来自Url的歌曲时选择。 我给你看了一个代码片段:
private void PlaylistMidday(String folder, string extendsion)
{
string myPlaylist = "D:\\Music\\The_Chemical_Brothers-Do_It_Again-(US_CDM)-2007-SAW\\";
ListView musicList = new ListView();
WMPLib.IWMPPlaylist pl;
WMPLib.IWMPPlaylistArray plItems;
plItems = player1.playlistCollection.getByName(myPlaylist);
if (plItems.count == 0)
pl = player1.playlistCollection.newPlaylist(myPlaylist);
else
pl = plItems.Item(0);
DirectoryInfo dir = new DirectoryInfo(folder);
FileInfo[] files = dir.GetFiles(extendsion, SearchOption.AllDirectories);
foreach (FileInfo file in files)
{
string musicFile01 = file.FullName;
string mName = file.Name;
ListViewItem item = new ListViewItem(mName);
musicList.Items.Add(item);
WMPLib.IWMPMedia m1 = player1.newMedia(musicFile01);
pl.appendItem(m1);
}
player1.currentPlaylist = pl;
player1.Ctlcontrols.play();
}
On Load我决定播放“myPLaylist”的歌曲,所以我问你知道如何在列表框中显示我的播放列表的歌曲,当我点击所选项目时我会改变歌曲吗?
Thansk的支持。
不错的问候
答案 0 :(得分:1)
您可以将其添加到List<string>
作为返回值,而不是将歌曲添加到播放列表。在加载事件时,您只需调用获取文件夹中媒体文件路径列表的方法,然后将它们添加到列表框中。
要更改正在播放的歌曲,您只需要添加SelectedValueChanged/SelectedItemChanged
事件,在这种情况下,获取当前在列表框中选择的文件路径,然后让WMP为您播放:)
private void Form1_Load(object sender, EventArgs e)
{
List<string> str = GetListOfFiles(@"D:\Music\Bee Gees - Their Greatest Hits - The Record");
listBox1.DataSource = str;
listBox1.DisplayMember = "str";
}
private List<string> GetListOfFiles(string Folder)
{
DirectoryInfo dir = new DirectoryInfo(Folder);
FileInfo[] files = dir.GetFiles("*.mp3", SearchOption.AllDirectories);
List<string> str = new List<string>();
foreach (FileInfo file in files)
{
str.Add(file.FullName);
}
return str;
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string strSelected = listBox1.SelectedValue.ToString();
MessageBox.Show(strSelected); //Just demo, you can add code that have WMP played this file here
}
快速解决方案。 :)。不是很好,但它的工作原理。帮助这个希望