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

C# 音乐播放器源码

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.44M
  • 下载次数:68
  • 浏览次数:1414
  • 发布时间:2015-09-24
  • 实例类别:C#语言基础
  • 发 布 人:820814272
  • 文件格式:.zip
  • 所需积分:5

实例介绍

【实例简介】

【实例截图】

【核心代码】

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

namespace 播放器
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            MediaPlayer.settings.setMode("loop", true);
        }
        static int num = 1;
        static bool kuaijin = false;
        ListViewItem item;
        private void 打开文件夹ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {

                string path = folderBrowserDialog1.SelectedPath;//打开文件夹的路径
                string[] str = Directory.GetFiles(path);
                for (int i = 0; i < str.Length; i  )
                {
                    item = new ListViewItem();
                    item.Text = num.ToString();
                    if (Path.GetExtension(str[i]) == ".mp3")
                    {
                        item.SubItems.Add(Path.GetFileName(str[i]));
                        item.SubItems.Add(str[i]);
                        listView1.Items.Add(item);
                        IWMPMedia song = MediaPlayer.newMedia(@str[i]);
                        MediaPlayer.currentPlaylist.appendItem(song);
                        num  ;
                    }
                }

            }
            MediaPlayer.Ctlcontrols.play();
     }
        private void 打开文件ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string[] sdr = openFileDialog1.SafeFileNames;
                string[] str = openFileDialog1.FileNames;
                for (int i =0; i<str.Length; i  )
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = num.ToString();
                    item.SubItems.Add(sdr[i]);
                    item.SubItems.Add(str[i]);
                    listView1.Items.Add(item);
                    IWMPMedia song = MediaPlayer.newMedia(@str[i]);
                    MediaPlayer.currentPlaylist.appendItem(song);
                    MediaPlayer.Ctlcontrols.playItem(song);
                    num  ;
                }
            }
        }

        private void listView1_DoubleClick(object sender, EventArgs e)
        {
            //想要优先播放某一首歌
            int a = listView1.SelectedItems[0].Index;
            IWMPMedia song = MediaPlayer.currentPlaylist.get_Item(a);
            MediaPlayer.Ctlcontrols.playItem(song);
        }

        private void 播放ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MediaPlayer.Ctlcontrols.play();
        }

        private void 暂停ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MediaPlayer.Ctlcontrols.pause();
            toolStripButton1.Text = "暂停";
        }

        private void 停止ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MediaPlayer.Ctlcontrols.stop();
        }

        private void 上一首ToolStripMenuItem_Click(object sender, EventArgs e)
        {

            MediaPlayer.Ctlcontrols.previous();
        }

        private void 下一首ToolStripMenuItem_Click(object sender, EventArgs e)
        {

            MediaPlayer.Ctlcontrols.next();

        }

        private void 打开列表ToolStripMenuItem_Click(object sender, EventArgs e)
        {


            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                StreamReader reader = new StreamReader(openFileDialog1.FileName);
                string s="";
                while ((s=reader.ReadLine())!=null)
                {
                    ListViewItem idd = new ListViewItem();
                    idd.Text = num.ToString();
                    idd.SubItems.Add(Path.GetFileName(s));
                    idd.SubItems.Add(s);
                    listView1.Items.Add(idd);
                    IWMPMedia song = MediaPlayer.newMedia(s);
                    MediaPlayer.currentPlaylist.appendItem(song);
                    MediaPlayer.Ctlcontrols.play();
                    num  ;
                }
                reader.Close();
            }
        }
        private void 保存列表ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                StreamWriter writer = new StreamWriter(saveFileDialog1.FileName);
                string s = "";
                for (int i = 0; i < listView1.Items.Count; i  )
                {
                    s = listView1.Items[i].SubItems[2].Text;
                    writer.WriteLine(s);
                }

                writer.Close();
            }
        }
        private void 清空列表ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            MediaPlayer.currentPlaylist.clear();
        }
        private void 播放ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count != 0)
            {
                int a = listView1.SelectedItems[0].Index;
                IWMPMedia song = MediaPlayer.currentPlaylist.get_Item(a);
                MediaPlayer.Ctlcontrols.playItem(song);
            }
            else
            {
                MessageBox.Show("请选中一首歌曲!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {

                if (listView1.SelectedItems.Count != 0)
                {
                    int b = listView1.SelectedItems[0].Index;
                    listView1.SelectedItems[0].Remove();
                    IWMPMedia song = MediaPlayer.currentPlaylist.get_Item(b);
                    MediaPlayer.currentPlaylist.removeItem(song);
                    if (b != listView1.Items.Count)
                    {
                        MediaPlayer.Ctlcontrols.playItem(MediaPlayer.currentPlaylist.get_Item(b));
                    }
                    else
                    { 
                       int c=Convert.ToInt32(listView1.Items[0].Text);
                    MediaPlayer.Ctlcontrols.playItem(MediaPlayer.currentPlaylist.get_Item(c-1));
                    }
                }
                else
                {
                    MessageBox.Show("请选中一首歌曲", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            catch (Exception a)
            {
                MessageBox.Show(a.Message);
            }
          
        }
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            if (toolStripButton1.Text == "播放")
            {
                MediaPlayer.Ctlcontrols.play();
                toolStripButton1.Text = "暂停";
            }
            else if (toolStripButton1.Text == "暂停")
            {
                MediaPlayer.Ctlcontrols.pause();
                toolStripButton1.Text = "播放";
            }
        }
        private void 单曲循环ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MediaPlayer.Ctlcontrols.playItem(MediaPlayer.currentPlaylist.Item[0]);
        }
        private void 快进ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (kuaijin == false)
            {

                MediaPlayer.Ctlcontrols.fastForward();
                快进ToolStripMenuItem.Text = "播放";
                kuaijin = true;
            }
            else
            {

                MediaPlayer.settings.rate = 1;
                快进ToolStripMenuItem.Text = "快进";
                kuaijin = false;
            }
        }
 
        private void 随机播放ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MediaPlayer.settings.setMode("shuffle", true);
        }

        private void 列表循环ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MediaPlayer.settings.setMode("loop", true);

        }

        private void 关于作者ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("本软件由陈明保编写制作完成", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            if (MediaPlayer.settings.mute == false)
            {
                MediaPlayer.settings.mute = true;
                tool3.Text = "播放";
            }
            else
            {
                MediaPlayer.settings.mute = false;
                tool3.Text = "静音";
            }
        }
         private void toolStripButton2_Click(object sender, EventArgs e)
        {
            MediaPlayer.Ctlcontrols.previous();
        }

        private void toolStripButton3_Click_1(object sender, EventArgs e)
        {
            MediaPlayer.Ctlcontrols.next();
        }

        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            MediaPlayer.Ctlcontrols.stop();
        }

        private void toolStripButton5_Click(object sender, EventArgs e)
        {
            MediaPlayer.Ctlcontrols.play();
        }

     
        public void Showlrc()
        { 
            StreamReader rd;
            string name = "";
            rtbox.ReadOnly = true;
            string[] lrc = Directory.GetFiles(@"e:\lrc");
            foreach (string geci in lrc)
            {
                rd = new StreamReader(geci);
                name = Path.GetFileNameWithoutExtension(geci);
                if (MediaPlayer.currentMedia.name == name)
                {
                    string s = "";
                    while ((s=rd.ReadLine())!=null)
                    {
                       
                        rtbox.AppendText("\t"   s   "\r");

                    }

                    rd.Close();

                }
                else
                {
                    rtbox.AppendText("");
                }

            }
            if (rtbox.TextLength == 0)
            {
                rtbox.AppendText("抱歉,没有搜索到歌词文件");
            }
        }

        private void 属性ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count != 0)
            {
                string s = listView1.SelectedItems[0].SubItems[2].Text;
                DateTime time = File.GetCreationTime(s);
                string size = s.Length.ToString();
                MessageBox.Show(string.Format("文件路径是{0}\n文件大小为{1}\n文件创建时间是{2}", s, size, time.ToShortDateString()));
             
            }
            else
            {
                MessageBox.Show("请选中一首歌曲!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

        }

        private void 顺序播放ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MediaPlayer.settings.setMode("showFrame", true);
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
       }

        private void 当前播放媒体信息ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string a = MediaPlayer.currentMedia.getItemInfo("Title");
            string b = MediaPlayer.currentMedia.getItemInfo("Author");
            string c = MediaPlayer.currentMedia.getItemInfo("FileType");
            string d = MediaPlayer.currentMedia.getItemInfo("FileSize");
            MessageBox.Show(string.Format("媒体标题是 {0}\n艺术家是 {1}\n文件类型为 {2}\n文件大小为{3}", a, b, c,d));
        }

        private void 添加文件ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string[] sdr = openFileDialog1.SafeFileNames;
                string[] str = openFileDialog1.FileNames;
                for (int i = 0; i < str.Length; i  )
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = num.ToString();
                    item.SubItems.Add(sdr[i]);
                    item.SubItems.Add(str[i]);
                    listView1.Items.Add(item);
                    IWMPMedia song = MediaPlayer.newMedia(@str[i]);
                    MediaPlayer.currentPlaylist.appendItem(song);
                    MediaPlayer.Ctlcontrols.play();
                    num  ;
                }
            }

        }
        //delegate void SetTimeCallback(int text);
        //delegate void SetValueCallback(int time, int i);
        //Thread t;
        private void MediaPlayer_CurrentItemChange(object sender, AxWMPLib._WMPOCXEvents_CurrentItemChangeEvent e)
        {
            int selectedindex = 0;//记录listview1当前高亮显示的项的下标
            for (int i = 0; i < listView1.Items.Count; i  )
            {
                if (listView1.Items[i].SubItems[2].Text == MediaPlayer.currentMedia.sourceURL)
                {
                    selectedindex = i;
                    break;
                }
            }
            for (int i = 0; i < listView1.Items.Count; i  )
            {
                //listView1.Items[i].Selected = false;
                listView1.Items[i].ForeColor = Color.Black;
            }
            listView1.Focus();
            //listView1.Items[selectedindex].Selected = true;
            listView1.Items[selectedindex].ForeColor = Color.RoyalBlue;
            rtbox.Clear();
            Showlrc();
            //progressBar1.Value = 0;//进度条清零
            //string str=openFileDialog1.FileName;
            //FileInfo f = new FileInfo(str);
            ////进度条最大值是文件大小/1024
            // progressBar1 .Maximum= (int)(f.Length/1024);
            ////创建流对象,读文件流
            // FileStream fileread = new FileStream(str, FileMode.Open, FileAccess.Read);
      
                
            //        //创建读取器,方便我们读取String
            //        //StreamReader reader = new StreamReader(filestream);
            //        byte[] bytes = new byte[1024*1024*4];//相对比较合理
            //        //循环读取自动偏移
            //        int j;//记录读取的实际字节数
            //        while ((j=fileread.Read(bytes, 0, bytes.Length)) != 0)
            //        {
            //            progressBar1.Value  = j/1024;
            //        }
        //    string s = MediaPlayer.currentMedia.durationString;
        //    string[] str = s.Split(':');
        //    int fen = s[0] * 60;
        //    int miso = s[1];
        //    time = (fen   miso)*1000;

        //    t = new Thread(new ThreadStart(NewMethod));
        //    t.Start();

        //}
        //private int time;
        //private void NewMethod()
        //{
        //    settime(time);//设置最大值
        //    for (int i = 1; i <= 100; i  )
        //    {
        //        SetValue(time, i);//设置进度条当前位置
        //        Thread.Sleep(time / 100);//等待多久跳一次
        //    }

        }

        //private void SetValue(int time, int i)
        //{
        //    //progressBar1.Value = i * (time / 100);
        //    if (this.progressBar1.InvokeRequired)
        //    {
        //        SetValueCallback d = new SetValueCallback(SetValue);
        //        this.Invoke(d, new object[] { time, i });
        //    }
        //    else
        //    {
        //        this.progressBar1.Value = i * (time / 100);
        //    }
        //}

        //private void settime(int time)
        //{
        //    if (this.progressBar1.InvokeRequired)
        //    {
        //        SetTimeCallback d = new SetTimeCallback(settime);
        //        this.Invoke(d, new object[] { time });
        //    }
        //    else
        //    {
        //        this.progressBar1.Maximum = time;
        //    }

            //this.progressBar1.Maximum = time;
        //}

        private void Form1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Copy;
            string[] str = (string[])e.Data.GetData(DataFormats.FileDrop, true);
            //string[] sdr = strDro
            //string[] str = openFileDialog1.FileNames;
                for (int i = 0; i < str.Length; i  )
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = num.ToString();
                    item.SubItems.Add(Path.GetFileName(str[i]));
                    item.SubItems.Add(str[i]);
                    listView1.Items.Add(item);
                    IWMPMedia song = MediaPlayer.newMedia(str[i]);
                    MediaPlayer.currentPlaylist.appendItem(song);
                    MediaPlayer.Ctlcontrols.playItem(song);
                    num  ;
                }
        }

  
        }
     }
        
 


实例下载地址

C# 音乐播放器源码

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

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

网友评论

第 1 楼 Man徘徊 发表于: 2016-06-28 14:37 01
不错,支持一下

支持(0) 盖楼(回复)

第 2 楼 gaohaiyang 发表于: 2020-06-21 17:43 04
注释太少了

支持(0) 盖楼(回复)

第 3 楼 gaohaiyang 发表于: 2020-06-21 17:43 36
注释太少了,好多地地方你定义的变量是干啥用的,你好歹注释一下啊

支持(0) 盖楼(回复)

发表评论

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

查看所有4条评论>>

小贴士

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

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

关于好例子网

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

;
报警