最近教员要求我们做一个山寨的播放器.
用VS来开发.
我做了,但现在出现了一个让我异常纠结的问题!
就是我的播放器都可以获取到我的音乐的路径,
但就是什么也播放不了.!
这是什么原因呢?
求各位大侠帮忙找找,到底出什么问题了.请邮件我提供源代码给各位大侠.

解决方案 »

  1.   

    最好是贴点代码
    你可以参考一下
    http://blog.csdn.net/kingzhexian/article/details/6819492
      

  2.   


    源代码:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Xml;namespace MusicPlayer
    {
        public partial class frmPlayer : Form
        {
            private static frmPlayer uniquePlayer;        public frmPlayer()
            {
                InitializeComponent();
            }        public static frmPlayer GetInstance()
            {
                if (uniquePlayer==null)
                {
                    uniquePlayer = new frmPlayer();
                }
                return uniquePlayer;
            }        //窗体关闭事件
            private void frmPlayer_FormClosing(object sender, FormClosingEventArgs e)
            {
                frmPlayer.uniquePlayer = null;
            }        Dictionary<int,SongDetails> playList = new Dictionary<int,SongDetails>();        //窗体加载事件
            private void frmPlayer_Load(object sender, EventArgs e)
            {
                //填充TreeView
                fillTreeView();
            }        //声明一个TreeView的全局变量
            TreeNode nodes;        //设置一个数组来接受播放歌曲的路径
            private string[] path=new string[50];        //填充TreeView
            private void fillTreeView()
            {
                //手动添加一个根节点"默认播放列表"
                nodes = new TreeNode("默认播放列表");
                this.tvList.Nodes.Add(nodes);            //读取Xml文件
                ReadXml();
            }        //读取Xml文件
            private void ReadXml()
            {
                //创建并实例化一个XmlDocument的对象
                XmlDocument myXml = new XmlDocument();
                //利用Load方法来读取Xml文件
                myXml.Load(@"files\PlayList.xml");
                //获取Xml文件里的根节点
                XmlElement elem = myXml.DocumentElement;
                //设置一个变量来接受歌曲的名称
                TreeNode allSong = null;
                //遍历xml文件里的所有节点
                foreach (XmlNode node in myXml.ChildNodes)
                {
                    int i=0;
                    //如果有一个节点的名称为"MyFav"
                    if (elem.Name.Equals("MyFav"))
                    {
                        //就遍历"MyFav"下的所有子结点
                        foreach (XmlNode item in node.ChildNodes)
                        {
                            //如果"MyFav"下有一个节点的名称为"songName"
                            if (item.Name.Equals("songName"))
                            {
                                //就把"songName"标签里的值读取出来,赋给allSong
                                allSong = new TreeNode(item.InnerText);
                                //再把allSong加到"默认播放列表"的子节点里
                                nodes.Nodes.Add(allSong);
                            }
                            //如果"MyFav"下有一个节点的名称为"songName"
                            else if (item.Name.Equals("songPath"))
                            {
                                while(i < 50)
                                {
                                    path[i] = item.InnerText;
                                    string playName = allSong.Text;
                                    SongDetails songs = new SongDetails((i + 1), playName, path[i]);
                                    playList.Add(songs.SongID, songs);
                                    i++;
                                    break;
                                }
                            }
                        }
                    }
                }
            }        //"播放"按钮响应事件
            private void tsmiPlay_Click(object sender, EventArgs e)
            {
                //int i = 0;
                //while (path[i] != null)
                //{
                //    this.axWMPPlayer.settings.playCount = 10;//设定重复播放的次数
                //    this.axWMPPlayer.URL = @"I:\纠结\MyMusic\MusicPlayer\bin\Debug\Song\" + path[i];//设置音乐文件路径
                //    this.axWMPPlayer.Ctlcontrols.play();//播放
                //    i++;
                //}
                string songPath = @"Song\"+this.tvList.SelectedNode.Text+".mp3";
                this.axWMPPlayer.URL = songPath;
            }        //"停止"按钮响应事件
            private void tsmiStop_Click(object sender, EventArgs e)
            {
                this.axWMPPlayer.Ctlcontrols.stop();
            }        //"暂停"按钮响应事件
            private void tsmiTimeOut_Click(object sender, EventArgs e)
            {
                this.axWMPPlayer.Ctlcontrols.pause();
            }        //选中节点后的事件
            private void tvList_AfterSelect(object sender, TreeViewEventArgs e)
            {
                if (this.tvList.SelectedNode.Level==0)
                {
                    return;
                }
                else if (this.tvList.SelectedNode.Level==1)
                {
                    //用selectName来接受选中的节点的文本
                    string selectName = this.tvList.SelectedNode.Text;                //遍历playList,找到相对应的歌曲文件的名字
                    foreach (SongDetails item in playList.Values)
                    {
                        //如果找到相对应的歌曲文件的名字
                        if (selectName.Equals(item.SongName))
                        {
                            //获取相应歌曲的路径
                            string playPath = item.Path;
                            int i = 0;
                            while (playPath.Equals(path[i]))
                            {
                                this.axWMPPlayer.settings.playCount = 10;//设定重复播放的次数
                                this.axWMPPlayer.URL = @"I:\纠结\MyMusic\MusicPlayer\bin\Debug\Song\" + path[i];//设置音乐文件路径
                                this.axWMPPlayer.Ctlcontrols.play();//播放
                                i++;
                            }
                        }
                    }
                }
            }
        }
    }
      

  3.   

    先搞清楚播放不了是什么概念,是你代码问题,还是文件格式不支持,那么多音频格式,mediaplayer支持的只是有限的
      

  4.   


    MP3和wma都试过了.这个控件支持的有那些格式?
      

  5.   

    mediaplayer在XP解码能力太有限了 win7之后强大些了你直接用系统的mediaplayer播放一下看看是否能拨出来
      

  6.   

    你这个路径对吗?mp3文件放到哪里的
     string songPath = @"Song\"+this.tvList.SelectedNode.Text+".mp3";
      

  7.   


    this.axWMPPlayer.URL = @"I:\纠结\MyMusic\MusicPlayer\bin\Debug\Song\" + path[i];//设置音乐文件路径  就在这个路径里.因为是想用来测试的.