怎么在C#中增加播放器?

用c#开发windows应用程序,怎么在窗口中增加一个播放器(可以放音乐和视频),求各位高手指导?

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.Media;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;

namespace MyMusicPlays
{

public partial class Form1 : Form
{
Thread t, d;
Dictionary<int, MusicInfo> dicMusic = new Dictionary<int, MusicInfo>();
MusicInfo musicInfo = null;
int subId = 0;
DateTime openTheMusic;
public Form1()
{
InitializeComponent();
}
public static string SaveMusic = @"D:\SaveMusic.db";

private void button1_Click(object sender, EventArgs e)
{

}
//播放、暂停按钮
private void button1_Click_1(object sender, EventArgs e)
{
if (myMusicPlay.playState== WMPLib.WMPPlayState.wmppsUndefined || myMusicPlay.playState== WMPLib.WMPPlayState.wmppsPaused
|| myMusicPlay.playState== WMPLib.WMPPlayState.wmppsStopped)
{
myMusicPlay.Ctlcontrols.play();
btnStart.Text = "暂停(&P)";
timer1.Start();
}
else
{
myMusicPlay.Ctlcontrols.pause();
btnStart.Text = "播放(&P)";
timer1.Stop();
}
}
//停止按钮
private void button3_Click(object sender, EventArgs e)
{
myMusicPlay.Ctlcontrols.stop();
btnStart.Text = "播放(&P)";
pbMessage.Value = 0;
timer1.Stop();
}
//上传本地音乐
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Filter = "mp3音乐音频(*.mp3)|*.mp3|wma音乐音频(*.wma)|*.wma";
DialogResult dr = op.ShowDialog();
if (dr == DialogResult.OK)
{
musicInfo = new MusicInfo();
//获取最后一个\的位置
int lastIndex = op.FileName.LastIndexOf(@"\");
//获取文件名字
string musicName = op.FileName.Substring(lastIndex + 1);
musicInfo.MusicId = dicMusic.Count == 0 ? 1 : dicMusic.Count + 1;
musicInfo.MusicName = musicName;
musicInfo.MusicUrl = op.FileName;
musicInfo.MusicTime = "00:00";
fillListView(musicInfo);
dicMusic.Add(musicInfo.MusicId, musicInfo);
}
}
//填充表格的方法
private void fillListView(MusicInfo mi)
{
ListViewItem item = new ListViewItem(mi.MusicId.ToString());
item.SubItems.AddRange(new string[] {mi.MusicName,mi.MusicTime });
lsvItems.Items.Add(item);
}

private void lsvItems_SelectedIndexChanged(object sender, EventArgs e)
{

}
//动态显示时间
private void runTime()
{
while (true)
{
try
{
TimeSpan span = DateTime.Now - openTheMusic;
string musicTime = span.ToString().Substring(3,5);
lblMusicPlayTime.Invoke(new MethodInvoker(delegate
{ lblMusicPlayTime.Text = "当前进度:" + musicTime; }));
}
catch(Exception)
{
return;
}
Thread.Sleep(1000);
}
}

/// <summary>
/// 通过线程去播放音乐
/// </summary>
private void run()
{
myMusicPlay.Ctlcontrols.stop();
//控件事件委托(在线程里面失效)
try
{
lsvItems.Invoke(new MethodInvoker(delegate { subId = int.Parse(lsvItems.SelectedItems[0].SubItems[0].Text); }));
}
catch (Exception )
{
return;
}
string url = dicMusic[subId].MusicUrl;
myMusicPlay.URL = url;
myMusicPlay.Ctlcontrols.play();
}

//保存音乐--序列化文件
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
FileStream fs = new FileStream(SaveMusic, FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, dicMusic);
fs.Close();
MessageBox.Show("音乐文件保存成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
//窗体加载时显示出保存文件信息
private void Form1_Load(object sender, EventArgs e)
{
skinEngine1.SkinFile = "PageColor2.ssk";
myMusicPlay.settings.volume = tbMessage.Value;
lblMusicPlayTime.Text = "";
lblShowMusicTime.Text = "";
//读取
loading(readMessage());
}
//加载时候fill表格
private void loading(Dictionary<int, MusicInfo> dicMusic)
{
foreach (MusicInfo mi in dicMusic.Values)
{
ListViewItem item = new ListViewItem(mi.MusicId.ToString());
item.SubItems.AddRange(new string[] { mi.MusicName, mi.MusicTime });
lsvItems.Items.Add(item);
}
}
//读取本地信息
private Dictionary<int, MusicInfo> readMessage()
{
try
{
FileStream fs = new FileStream(SaveMusic, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
dicMusic = (Dictionary<int, MusicInfo>)bf.Deserialize(fs);
fs.Close();
}
catch (Exception) { FileStream fs = new FileStream(SaveMusic, FileMode.Create); fs.Close(); }
return dicMusic;
}

private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
showTheMusicTimes();
}
/// <summary>
/// 获取歌曲长度
/// </summary>
private void showTheMusicTimes()
{
//检查状态~
if (myMusicPlay.playState == WMPLib.WMPPlayState.wmppsStopped || myMusicPlay.playState == WMPLib.WMPPlayState.wmppsUndefined
|| subId == 0)
{
return;
}
if (lsvItems.SelectedItems.Count <= 0) return;
string thisTime = myMusicPlay.currentMedia.durationString;
dicMusic[subId].MusicTime = thisTime;
lsvItems.SelectedItems[0].SubItems[2].Text = thisTime;
}

private void button1_Click_2(object sender, EventArgs e)
{
DateTime times = Convert.ToDateTime(myMusicPlay.currentMedia.durationString);
int min = times.Hour;
int sco = times.Minute;
int sum = min * 60 + sco;
MessageBox.Show(sum.ToString());
}

private void timer1_Tick(object sender, EventArgs e)
{
if (pbMessage.Value < pbMessage.Maximum)
{
pbMessage.Value++;
}
}
//窗体关闭~线程终止
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
d.Abort();
}
catch (Exception)
{
return;
}
}
//增加音量图片按钮
private void pictureBox2_Click(object sender, EventArgs e)
{
if (tbMessage.Value <= 95)
{
tbMessage.Value += 5;
myMusicPlay.settings.volume = tbMessage.Value;
}
}
/// <summary>
/// 滚动时候改变音量大小
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tbMessage_Scroll(object sender, EventArgs e)
{
myMusicPlay.settings.volume = tbMessage.Value;
}
//减少音量图片按钮
private void pictureBox1_Click(object sender, EventArgs e)
{
if (tbMessage.Value >= 5)
{
tbMessage.Value += -5;
myMusicPlay.settings.volume = tbMessage.Value;
}
}

private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}

private void lsvItems_DoubleClick(object sender, EventArgs e)
{
if (lsvItems.SelectedItems.Count <= 0) return;
btnStart.Enabled = true;
t = new Thread(new ThreadStart(run));
t.Start();
pbMessage.Value = 0;
//进度条工作..获取预播放曲目的时长
string strTimes = lsvItems.SelectedItems[0].SubItems[2].Text;
if (strTimes == "00:00")
{
showTheMusicTimes();
strTimes = lsvItems.SelectedItems[0].SubItems[2].Text;
}
DateTime times = Convert.ToDateTime(strTimes);
int min = times.Hour;
int sco = times.Minute;
pbMessage.Maximum = (min * 60 + sco);
timer1.Start();
lblShowMusicTime.Text = "曲目时长:" + strTimes;
openTheMusic = DateTime.Now;
d = new Thread(new ThreadStart(runTime));
d.Start();
btnStart.Text = "暂停(&P)";
}

private void 播放ToolStripMenuItem_Click(object sender, EventArgs e)
{
lsvItems_DoubleClick(sender, e);
}

private void 移入播放单ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lsvItems.SelectedItems.Count <= 0) return;
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-14
Windows Media Player组件

在工具箱中添加项
看看.NET和COM组件里面有没有Windows Media Player组件
如果有的话,选中它,确定
再点击一下窗体,将这个组件拖到窗体中
设置该控件的URL等相关的属性,运行就OK了本回答被提问者采纳