C# 窗口媒体播放器#

C# 窗口媒体播放器#,c#,.net,winforms,C#,.net,Winforms,我正在制作音乐播放器,因此我选择使用Windows Media PLayer库: 现在我陷入了困境,因为我希望在列表框中显示歌曲的名称,并实时更改歌曲,但我不知道如何继续。 我存储文件夹中的歌曲,因此当音乐播放器运行Url中的歌曲时,请选择。 我向您展示一段代码片段: private void PlaylistMidday(String folder, string extendsion) { string myPlaylist = "D:\\Music\\Th

我正在制作音乐播放器,因此我选择使用Windows Media PLayer库: 现在我陷入了困境,因为我希望在列表框中显示歌曲的名称,并实时更改歌曲,但我不知道如何继续。 我存储文件夹中的歌曲,因此当音乐播放器运行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();

   }
在加载时,我决定播放“myPLaylist”中的歌曲,因此我问您是否知道如何在列表框中显示我的播放列表中的歌曲,当我单击所选项目时,我将更改歌曲

谢谢你的支持


您可以将歌曲作为返回值添加到
列表中,而不是将歌曲添加到播放列表中。加载事件时,您只需调用获取文件夹中媒体文件路径列表的方法,然后将它们添加到列表框中

要更改正在播放的歌曲,只需添加
SelectedValueChanged/SelectedItemChanged
事件,在此事件中,获取列表框中当前选定的文件路径,然后让WMP为您播放:)

private void Form1\u加载(对象发送方,事件参数e)
{
List str=GetListOfFiles(@“D:\Music\Bee Gees-他们最伟大的作品-唱片”);
listBox1.DataSource=str;
listBox1.DisplayMember=“str”;
}
私有列表GetListOfFiles(字符串文件夹)
{
DirectoryInfo dir=新的DirectoryInfo(文件夹);
FileInfo[]files=dir.GetFiles(“*.mp3”,SearchOption.AllDirectories);
List str=新列表();
foreach(文件中的文件信息文件)
{                             
str.Add(file.FullName);
}
返回str;
}
私有无效列表框1\u SelectedIndexChanged(对象发送方,事件参数e)
{
string strSelected=listBox1.SelectedValue.ToString();
Show(strSelected);//只要演示一下,就可以在这里添加让WMP播放这个文件的代码
}

一个快速的解决方案。不是很好,但它很有效。帮助实现这一愿望

Hi Vimvq您能发布一段关于这一点的代码片段吗?抱歉,我是C#中的新手,谢谢VimvqHi,我放了不同的播放列表,因为它们需要在不同的时间播放,计时器会在正确的时间调用播放列表。:)我刚刚添加了演示代码。一个快速的(也许是肮脏的)代码。现在我得睡觉了:)。很高兴它能提供帮助非常感谢您的帮助,我可以更改代码,这样我就可以选择我喜欢的歌曲,但是当Windows Media PLayer更改歌曲时,列表框没有跟随歌曲,而是一直处于停滞状态。,。我如何将两者同步???您可能希望了解WMP的事件,如果你不知道这些事件是什么,那么你应该查阅关于它们的C#文档。我认为您要查找的事件是CurrentItemChange,另请参见
 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 
        }