最近教员要求我们做一个山寨的播放器.
用VS来开发.
我做了,但现在出现了一个让我异常纠结的问题!
就是我的播放器都可以获取到我的音乐的路径,
但就是什么也播放不了.!
这是什么原因呢?
求各位大侠帮忙找找,到底出什么问题了.请邮件我提供源代码给各位大侠.
用VS来开发.
我做了,但现在出现了一个让我异常纠结的问题!
就是我的播放器都可以获取到我的音乐的路径,
但就是什么也播放不了.!
这是什么原因呢?
求各位大侠帮忙找找,到底出什么问题了.请邮件我提供源代码给各位大侠.
调试欢乐多
你可以参考一下
http://blog.csdn.net/kingzhexian/article/details/6819492
源代码:
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++;
}
}
}
}
}
}
}
MP3和wma都试过了.这个控件支持的有那些格式?
string songPath = @"Song\"+this.tvList.SelectedNode.Text+".mp3";
this.axWMPPlayer.URL = @"I:\纠结\MyMusic\MusicPlayer\bin\Debug\Song\" + path[i];//设置音乐文件路径 就在这个路径里.因为是想用来测试的.