C#中的Window Media PLayer

时间:2009-03-29 16:37:22

标签: c# .net winforms

我正在建立一个音乐播放器,因此我选择使用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的支持。

不错的问候

1 个答案:

答案 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 
        }

快速解决方案。 :)。不是很好,但它的工作原理。帮助这个希望