在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C# 音乐播放器实例源码下载

C# 音乐播放器实例源码下载

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:14.98M
  • 下载次数:42
  • 浏览次数:586
  • 发布时间:2017-06-07
  • 实例类别:C#语言基础
  • 发 布 人:太累了
  • 文件格式:.zip
  • 所需积分:2

实例介绍

【实例简介】


【实例截图】


需要启用 Windows Media Player 功能,否则会提示【System.Runtime.InteropServices.COMException:“没有注册类】

操作步骤:控制面板>>程序>>启用或者关闭windows 功能>>选中 媒体功能>>Windows Media Player,点击确定即可

from clipboard

【核心代码】


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


namespace 音乐播放器
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        #region 窗体加载事件 加载内容
        private void Form1_Load(object sender, EventArgs e)
        {
            #region 设置默认播放列表
            Directory.CreateDirectory(@"d:\cloud");             //建立默认文件夹
            FileInfo fi = new FileInfo(@"d:\cloud\info.list");   //声明文件对象
            if (fi.Exists && fi.Length > 0)                    //判断是否存在默认文件并且文件不为空
            {
                Read(@"d:\cloud\info.list");                    //读取默认路径的文件

            }

            

            #endregion

        }
        #endregion
        #region 调用方法
        #region 把文件添加到列表中
        public static int count = 1;
        //把选中歌曲内容加到列表中方法
        public void SetPlayList(string[] s)
        {
            string strType = "mp3|mp4|wma";
            ArrayList list = new ArrayList();
            //遍历字符串数组s
            foreach (string lis in s)
            {      //从路径lis中截取出歌曲的后缀名
                string str = lis.Substring(lis.LastIndexOf(".") 1);//取点后边的字符串
                //将后缀名类型以'|'分割成字符串数组
                string[] st = strType.Split('|');
                //将歌曲的后缀名分别与给出的类型配对
                foreach (string stt in st)
                {
                    if (str == stt)
                    {    //声明一个WMPLib.IWMPMedia的对象media,该对象可以添加到播放器的播放清单中
                        WMPLib.IWMPMedia media = this.axWindowsMediaPlayer1.newMedia(lis);
                        //添加到播放器的播放清单中
                        this.axWindowsMediaPlayer1.currentPlaylist.appendItem(media);
                        //按顺序播放清单中的文件
                        this.axWindowsMediaPlayer1.Ctlcontrols.play();
                        //初始化一个ListViewItem类型的实例
                        ListViewItem item = new ListViewItem();
                        string name = Path.GetFileName(lis);
                        string[] sna = name.Split('.');//将歌曲名以“.”分割成名字和后缀名
                        item.Text = "" count;//取序号
                        //把播放的歌曲信息添加到播放列表中
                        item.SubItems.Add(sna[0]);//取名字部分
                        item.SubItems.Add(lis);//取地址
                        listView1.Items.Add(item);//把每一个子项添加到项中
                        count ;//每添加一项后序号 1
                    }
                }
            }
        }
        #endregion


        /// <summary>
        /// 读取列表
        /// </summary>
        /// <param name="path">用户选择的读取列表路径</param>
        private void Read(string path)
        {

            StreamReader sr = new StreamReader(path);               //声明写读对象
            int i = 1;                                           //声明变量为listview列表序号赋值
            int n = path.LastIndexOf('.');                         //获取文件名最后一次出现"."的索引
            if (path.Substring(n, path.Length - n) == ".list")       //判断文件的格式是否为“.list”
            {
                this.listView1.Items.Clear();                      //清空listview列表
                this.axWindowsMediaPlayer1.currentPlaylist.clear();   //清空播放器列表
                while (true)                                      //循环写入列表中的文件
                {
                    string s = sr.ReadLine();                      //接受读取的字符串,实际上是歌曲的地址
                    if (s == null)                                 //判断是否读取完成,如果读完就跳出循环
                    {
                        break;
                    }

                    WMPLib.IWMPMedia me = this.axWindowsMediaPlayer1.newMedia(s);//声明播放文件对象
                    this.axWindowsMediaPlayer1.currentPlaylist.appendItem(me);   //把播放文件对象添加到播放器列表中
                    this.axWindowsMediaPlayer1.Ctlcontrols.play();              //播放器按顺序播放歌曲
                    List(s, i);                                              //使用listview列表方法与播放器列表同步
                    i ;                                                      //序号变量自加1
                }
                sr.Close();                                                     //关闭读文件流
            }
            else
            {
                sr.Close();
                MessageBox.Show("请选择正确的文件格式:“.list格式”");
            }
        }

        /// <summary>
        /// 保存列表
        /// </summary>
        /// <param name="path">用户选择的保存列表路径</param>
        private void Write(string path)
        {
            StreamWriter sw = new StreamWriter(path);           //指定文件的写入路径
            foreach (ListViewItem l in listView1.Items)         //循环比例listview列表
            {
                sw.WriteLine(l.SubItems[2].Text);             //获得列表中的每个歌曲的地址并写入文件
            }
            sw.Close();                                     //关闭文件写入

        }

        /// <summary>
        /// 判断播放文件颜色变红
        /// </summary>
        private void songColor()
        {
            string playSong = this.axWindowsMediaPlayer1.currentMedia.sourceURL;  //获取播放文件的地址
            foreach (ListViewItem l in listView1.Items)                         //遍历listview中的文件地址
            {
                if (l.SubItems[2].Text == playSong)                            //如果文件地址和播放文件地址相同就改变颜色
                {
                    listView1.Items[l.Index].ForeColor = Color.Red;
                }
                else
                {
                    listView1.Items[l.Index].ForeColor = Color.Blue;            //如果不同就为默认色
                }
            }
        }

        /// <summary>
        /// 播放器列表同步至Listview列表
        /// </summary>
        /// <param name="path">文件路径数组</param>
        private void List(string path, int i)
        {

            ListViewItem liv = new ListViewItem(i.ToString());  //声明ListViewItem对象并为其复制
            this.listView1.Items.Add(liv);                     //为序号赋值
            int n = path.LastIndexOf(@"\");                    //截取文件名字的索引位置
            liv.SubItems.Add(path.Substring(n 1));             //添加文件名字到列表
            liv.SubItems.Add(path);                             //添加文件地址到列表

        }

        /// <summary>
        /// 添加文件并同步播放
        /// </summary>
        /// <param name="path">打开文件的路径</param>
        private void OpenFiles(string[] path)
        {
            axWindowsMediaPlayer1.currentPlaylist.clear(); //清空播放器内部的播放列表
            listView1.Items.Clear();                     //清空ListView列表
            int i = 1;                                  //设定变量来改变ListView的序号
            foreach (string s in path)                   //遍历打开文件的地址数组
            {
                WMPLib.IWMPMedia me = this.axWindowsMediaPlayer1.newMedia(s); //声明一个播放器列表对象
                this.axWindowsMediaPlayer1.currentPlaylist.appendItem(me);    //把地址添加进播放器列表
                this.axWindowsMediaPlayer1.Ctlcontrols.play();               //播放器按列表顺序播放文件
                List(s, i);                                               //把播放文件同步到ListView列表
                i ;                                                      //序号加一
            }

        }
        #endregion
        #region 打开文件
        private void toolStripMenuItem1_Click(object sender, EventArgs e)//打开文件
        {
            openFileDialog1.InitialDirectory = @"d:\cloud"; //设定文件打开默认路径
            DialogResult file = openFileDialog1.ShowDialog(); //声明选择文件对话框选择结果的对象            
            if (file == System.Windows.Forms.DialogResult.OK) //如果点击OK则进行下一步,反之无操作
            {
                string[] strPath = openFileDialog1.FileNames; // 声明数组变量接受选择文件的路径可以是多个文件
                OpenFiles(strPath);                         //把选择的文件路径带入OpenFiles方法
            }

        }
        #endregion
        

        private void toolStripMenuItem2_Click(object sender, EventArgs e)//添加文件
        {
            //打开对话框并获得结果
            OpenFileDialog op = new OpenFileDialog();
            //设置可多选
            op.Multiselect = true;
            DialogResult dr = op.ShowDialog();
            //判断是否为“打开”
            if (dr == DialogResult.OK)
            {
                //清空播放器中播放列表

                string[] files = op.FileNames;
                SetPlayList(files);//将文件加到列表中
            }

        }

        private void toolStripMenuItem3_Click(object sender, EventArgs e)//打开文件夹
        {
            DialogResult dic = folderBrowserDialog1.ShowDialog();  //声明选择文件夹对话框选择结果对象      
            if (dic == System.Windows.Forms.DialogResult.OK)       //如果点击OK进行下一步,反之无操作
            {
                string[] dicFiles = Directory.GetFiles(folderBrowserDialog1.SelectedPath);//声明数组变量接受选择文件夹中的文件的路径                                                         
                OpenFiles(dicFiles);                            //获得的文件路径变量带入OpenFile方法
            }

        }

        private void toolStripMenuItem4_Click(object sender, EventArgs e)//打开列表
        {
            DialogResult file = openFileDialog1.ShowDialog();                //声明文件对话框选择结果对象
            if (file == System.Windows.Forms.DialogResult.OK)                //判断选择结果是否为OK
            {
                string path = openFileDialog1.FileName;                     //接收文件名
                Read(path);
            }
        }

        private void toolStripMenuItem5_Click(object sender, EventArgs e)//保存列表
        {
            SaveFileDialog save = new SaveFileDialog();    //声明保存文件对话框选择对象
            save.Filter = "列表格式|.list";               //设定保存文件的格式
            save.InitialDirectory = @"d:\cloud";          //设定保存文件的默认路径
            if (save.ShowDialog() == DialogResult.OK)     //判断对话框选择结果是否是OK
            {

                Write(save.FileName);                   //把文件路径带入到方法中

            }
        }

        private void toolStripMenuItem6_Click(object sender, EventArgs e)//清空列表
        {
            this.listView1.Items.Clear();                                        //清空listview列表
            this.axWindowsMediaPlayer1.currentPlaylist.clear();                    //清空播放器列表

        }

        private void toolStripMenuItem7_Click(object sender, EventArgs e)//播放
        {
            this.axWindowsMediaPlayer1.Ctlcontrols.play();                 //播放文件
            songColor();                                                //判断播放文件并改变颜色
        }

        private void toolStripMenuItem8_Click(object sender, EventArgs e)//暂停
        {
            this.axWindowsMediaPlayer1.Ctlcontrols.pause();            //播放器暂停
        }

        private void toolStripMenuItem9_Click(object sender, EventArgs e)//静音
        {
            this.axWindowsMediaPlayer1.settings.volume = 0;
        }

        private void toolStripMenuItem10_Click(object sender, EventArgs e)//停止播放
        {
            this.axWindowsMediaPlayer1.Ctlcontrols.stop();
        }

        private void toolStripMenuItem11_Click(object sender, EventArgs e)//上一首
        {
            this.axWindowsMediaPlayer1.Ctlcontrols.previous();
            songColor();
        }

        private void toolStripMenuItem12_Click(object sender, EventArgs e)//下一首
        {
            this.axWindowsMediaPlayer1.Ctlcontrols.next();
            songColor();

        }

        private void toolStripMenuItem13_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                ListViewItem liv = listView1.SelectedItems[0];                          //声明ListView对象接受
                int index = liv.Index;                                                //接受选择文件的索引
                string path = axWindowsMediaPlayer1.currentMedia.sourceURL;              //接受正在播放文件的路径
                liv.Remove();                                                        //移除ListView中选中的文件
                WMPLib.IWMPMedia me = axWindowsMediaPlayer1.currentPlaylist.get_Item(index);//根据索引获得播放器列表中对应的对象
                axWindowsMediaPlayer1.currentPlaylist.removeItem(me);                     //删除播放列表中的对象
                if (liv.SubItems[2].Text == path)                                       //判断删除的文件是否正在播放的文件
                {
                    axWindowsMediaPlayer1.Ctlcontrols.play();                             //重新按播放器列表播放文件
                    //改变播放文件的颜色
                }
                int i = 1;                                                             //变量为ListView序号赋值
                foreach (ListViewItem l in listView1.Items)                               //遍历listview
                {
                    l.Text = i.ToString();                                              //为listview序号改值
                    i ;
                }


            }

        }

        private void toolStripMenuItem6_Click_1(object sender, EventArgs e)
        {
            this.listView1.Items.Clear();                                        //清空listview列表
            this.axWindowsMediaPlayer1.currentPlaylist.clear();                    //清空播放器列表
        }

        private void 帮助ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Help2 he2 = new Help2();                                   //建立一个Form框并声明一个对象
            he2.Show();                                               //弹出form框
            
        }

        private void toolStripMenuItem14_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)                            //判断选择项不为空
            {
                int index = listView1.SelectedItems[0].Index;               //获取选择项的索引
                //获取播放器里面对应索引的文件并播放
                this.axWindowsMediaPlayer1.Ctlcontrols.playItem(this.axWindowsMediaPlayer1.currentPlaylist.get_Item(index));
                //改变播放歌曲的颜色
            }
            else
            {
                MessageBox.Show("请选中要操作的文件");
            }
        }

        private void toolStripMenuItem16_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)                              //判断是否有选择项
            {
                string file = this.listView1.SelectedItems[0].SubItems[2].Text;   //提取选择项的路径
                Help he = new Help(file);                                      //另外建立一个Form 并声明对象 对构造函数传路径

                he.ShowDialog();                                              //显示对象所属的Form框(除了对话框不能做任何操作)

            }
            else
            {
                MessageBox.Show("请选中要查看的文件");                            //如果没有选中文件弹出对话框提示选择文件
            }
        }

        private void listView1_DoubleClick(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)     //判断是否有选择项
            {
                ListViewItem liv = listView1.SelectedItems[0];  //因为只能选一个,所以就是数组中的第一个元素
                int index = liv.Index;                        //接收元素在列表中的索引
                //因播放器列表和ListView列表是一一对应的所以获取索引对应的播放器对象并播放
                this.axWindowsMediaPlayer1.Ctlcontrols.playItem(this.axWindowsMediaPlayer1.currentPlaylist.get_Item(index));

            }


        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            toolStripMenuItem2_Click(null, null);      //效果与菜单栏中打开文件事件一样,直接带入方法
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            toolStripMenuItem3_Click(null, null);      //效果与菜单栏中打开文件加事件一样,直接带入方法

        }
       

    }
}


实例下载地址

C# 音乐播放器实例源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警