C#基于winform实现音乐播放器

本文实例为大家分享了C#基于winform实现音乐播放器的具体代码,供大家参考,具体内容如下

首先,右键工具箱的组件,找到选择项,找到Windows Media Player组件并添加。

设计界面:

首先实现基本的功能

给“”老板播放器“的播放暂停添加代码

MusicPlayer.Ctlcontrols.play();  //播放
MusicPlayer.Ctlcontrols.pause();//暂停
MusicPlayer.Ctlcontrols.stop();//停止

首先给Windows Media Player控件改名为MusicPlayer,并在程序加载时关闭自动播放和赋予一个默认的地址。

 private void Form1_Load(object sender, EventArgs e)
        {

            //在程序加载的时候,取消播放器的自动播放功能
            MusicPlayer.settings.autoStart = false;
            MusicPlayer.URL = @"E:\CloudMusic\陈亮 - 无题.mp3";

            label1.Image = Image.FromFile(@"C:\Users\14505\Desktop\继续.jpg");
        }

接下来是播放键的按钮

List<string> list = new List<string>();//用于储存音乐的全路径
 private void btnPlayorPause_Click(object sender, EventArgs e)
        {
            if (btnPlayorPause.Text == "播放")
            {
                if (b)
                {
                    //获得选中的歌曲  让音乐从头播放
                    MusicPlayer.URL = list[listBox1.SelectedIndex];
                }
                MusicPlayer.Ctlcontrols.play();
                btnPlayorPause.Text = "暂停";
            }
            else if (btnPlayorPause.Text == "暂停")
            {
                MusicPlayer.Ctlcontrols.pause();
                btnPlayorPause.Text = "播放";
                b = false;
            }
        }

用list集合来存储文件的路径,并且listbox控件的items也对应这list,这样我们可以通过点击listbox选中内容(获取它的索引)来找到对应索引的list集合中的路径并播放。

给listbox添加双击事件:

 /// <summary>
        /// 双击播放对应的音乐
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listBox1_DoubleClick(object sender, EventArgs e)
        {
            if (listBox1.Items.Count == 0)
            {
                MessageBox.Show("请首先原则音乐");
                return;
            }
            try
            {
                MusicPlayer.URL = list[listBox1.SelectedIndex];
                MusicPlayer.Ctlcontrols.play();
                btnPlayorPause.Text = "暂停";
                lblinformation.Text = MusicPlayer.Ctlcontrols.currentPosition.ToString();
            }
            catch { }
        }

接下来是打开按钮,我们需要打开对话框选取想要的音乐文件

 /// <summary>
        /// 打开按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "请选择您的文件";
            ofd.Filter = "音乐文件|*.mp3|全部文件|*.*";
            ofd.InitialDirectory = @"E:\CloudMusic";
            ofd.Multiselect = true;
            ofd.ShowDialog();

            //获得在文本框中选择的全路径
            string[] path = ofd.FileNames;
            for (int i = 0; i < path.Length; i++)
            {
                list.Add(path[i]);
                //将音乐文件的文件名存储到listbox中

                listBox1.Items.Add(Path.GetFileName(path[i]));
            }
        }

下面是上一首下一首的功能,我们只需要获取listbox控件中当前选中项的索引,在使用lst即可

 /// <summary>
        /// 下一曲
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button5_Click(object sender, EventArgs e)
        {

            //获得当前选中的索引
            int a = listBox1.SelectedIndex + 1;
            //清空所有选中的索引   这里是因为我们开启了多选属性,才需要清理
            listBox1.SelectedIndices.Clear();
            if (a == listBox1.Items.Count)
            {
                a = 0;
            }
            //将改变后的索引重新赋值给当前选中项的索引
            listBox1.SelectedIndex = a;
            MusicPlayer.URL = list[a];
            MusicPlayer.Ctlcontrols.play();
        }
        /// <summary>
        /// 上一曲
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button6_Click(object sender, EventArgs e)
        {
            int a = listBox1.SelectedIndex - 1;
            listBox1.SelectedIndices.Clear();
            if (a < 0)
            {
                a = listBox1.Items.Count - 1;
            }
            //将改变后的索引重新赋值给当前选中项的索引
            listBox1.SelectedIndex = a;
            MusicPlayer.URL = list[a];
            MusicPlayer.Ctlcontrols.play();
        }

给listbox控件添加一个右键菜单,我们需要多选删除功能。
这里必须先清除集合中的内容,再清除listbox控件中的内容,否则会引起程序的异常。

 /// <summary>
        /// 点击删除选中项
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //要删除列表中的选中项

            //先删集合
            //首先获得要删除的歌曲的数量
            int count = listBox1.SelectedItems.Count;
            for (int i = 0; i < count; i++)
            {
                //先删集合
                list.RemoveAt(listBox1.SelectedIndex);
                //在删列表
                listBox1.Items.RemoveAt(listBox1.SelectedIndex);
            }

        }

接下来是静音和外放按钮,这里我使用label控件添加了图片(百度自行找播放和暂停的图片即可)

 /// <summary>
        /// 点击放音或静音
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label1_Click(object sender, EventArgs e)
        {
            if (label1.Tag.ToString() == "1")
            {
                //目的:让你静音
                MusicPlayer.settings.mute = true;//静音
                //显示静音的图片
                label1.Image = Image.FromFile(@"C:\Users\14505\Desktop\暂停.jpg");
                label1.Tag = "2";
            }
            else
            {
                MusicPlayer.settings.mute = false;
                //显示放音图片
                label1.Image = Image.FromFile(@"C:\Users\14505\Desktop\继续.jpg");
                label1.Tag = 1;
            }
        }

接下来要加一个播放完自动下一首的功能
我这里使用了歌曲全部时常和当前播放时长去比较,当前播放时常+1等于全部时长时,我们就切换下一首
或者使用bool判断控件的播放状态也是一样的道理

private void timer1_Tick(object sender, EventArgs e)
        {
               //如果播放器的状态时正在播放中
            if (MusicPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying)
            {
                lblinformation.Text = MusicPlayer.currentMedia.duration.ToString() + "\r\n" + MusicPlayer.currentMedia.durationString + "\r\n" + MusicPlayer.Ctlcontrols.currentPositionString;

                double b1 = double.Parse(MusicPlayer.currentMedia.duration.ToString());
                double b2 = double.Parse(MusicPlayer.Ctlcontrols.currentPosition.ToString())+1;
                //如果歌曲当前的播放时间等于歌曲的总时间,自动播放下一曲    //比较时间的值
                if (b1<=b2)
                {
                    //获得当前选中的索引
                    int a = listBox1.SelectedIndex + 1;
                    //清空所有选中的索引
                    listBox1.SelectedIndices.Clear();
                    if (a == listBox1.Items.Count)
                    {
                        a = 0;
                    }
                    //将改变后的索引重新赋值给当前选中项的索引
                    listBox1.SelectedIndex = a;
                    MusicPlayer.URL = list[a];
                    MusicPlayer.Ctlcontrols.play();
                }
            }
            //比较时间的值
          
        }

运行截图:

本想添加一个显示歌曲歌词的功能的,但是找了半天也没找到歌词文件的下载方式。

这样一个简单的可以自用的播放器就做好啦!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C#自定义音乐播放器进度条

    有些时候我们做的程序需要进度条,而vs提供的控件不是我们想要的.先看效果图: 进度条闪烁动画,当然背景可设为Transparent 之前想手绘进度条线条的,结果控件运行时会闪烁,所以直接用了panel控件 源码: [DefaultEvent("ProgressClick")] [ToolboxBitmap(typeof(TrackBar))] public partial class ProcessBar : UserControl { public ProcessBar() { //

  • c#基于winform制作音乐播放器

    前言:项目是c#的winform 写的,使用的播放器是基于AxWindowsMediaPlayer. AxWindowsMediaPlayer的方法 1 首先新建一个页面 如图所示: 图片左侧是列表 使用listview 右侧是背景图片.图片框框的地方是后面可以实现的,+和-按钮分别代表添加文件和删除文件 还有就是控制播放的顺序.下面的分别是修改歌词的字体 和展示/隐藏 2 新建一个透明的歌词页面[窗体] 3 新建一个半透明的页面[窗体] 4 业务代码 using System; using S

  • 基于C#的音乐播放器主Form实现代码

    本文所述为一个由C#编写的音乐播放器的主Form代码,里面有一些小技巧还是不错的,现共享给大家参考一下.里面有播放器背景设置.线程定义.调用读取文件目录方法.播放时间计数器.设置LV背景.获取播放歌曲.播放按钮,切换播放or暂停.切换歌曲到下一首,调用切歌方法.显示播放列表.歌词局中.播放窗体最小化隐藏到托盘设置.进度条滚动模块.从歌曲列表中删除文件等等功能.且各个功能模板均备有较为详细的注释,便于大家阅读理解. 程序主要代码如下: using System; using System.Coll

  • C#开发可播放摄像头及任意格式视频的播放器

    前言 本文主要讲述,在WPF中,借助Vlc.DotNet调用VLC类库,实现视频播功能,下面我们先来做开发前的准备工作. 准备工作 首先,我们创建一个项目WpfVLC,然后,进入Neget搜索Vlc.DotNet,得到如下界面: 我们选择Vlc.DotNet.Wpf,点击安装(这里我已经安装了,所以图中显示为卸载). 然后,我们去VLC官网,下载VLC播放器. VLC官网:http://www.videolan.org/ 因为我的电脑是64位的,所以我下载64位的VLC版本,如下图: 下载完成后

  • C#基于winform实现音乐播放器

    本文实例为大家分享了C#基于winform实现音乐播放器的具体代码,供大家参考,具体内容如下 首先,右键工具箱的组件,找到选择项,找到Windows Media Player组件并添加. 设计界面: 首先实现基本的功能 给“”老板播放器“的播放暂停添加代码 MusicPlayer.Ctlcontrols.play();  //播放 MusicPlayer.Ctlcontrols.pause();//暂停 MusicPlayer.Ctlcontrols.stop();//停止 首先给Windows

  • Android基于Service的音乐播放器

    本文开发一个基于Service的音乐播放器,音乐由后台运行的Service负责播放,当后台的播放状态发生变化时,程序将会通过发送广播通知前台Activity更新界面:当点击Activity的界面按钮时,系统将通过发送广播通知后台Service来改变播放状态. 前台Activity界面有两个按钮,分别用于控制播放/暂停.停止,另外还有两个文本框,用于显示正在播放的歌曲名.歌手名.前台Activity的代码如下: public class MainActivity extends AppCompat

  • 基于Python实现音乐播放器的实现示例代码

    目录 一.环境设置 二.播放功能 三.停止功能 四.暂停与恢复 五.关闭 六.完整代码 七.改进 一.环境设置 第一步引入必须的各类包 import os import tkinter import tkinter.filedialog import random import time import threading import pygame 特别是pygame需要手动安装 pip install pygame 二.播放功能 首先选择音乐目录,然后创建播放现成,播放音乐. # 播放按钮 d

  • 基于python实现音乐播放器代码实例

    核心播放模块(pygame内核) import time import pygame import easygui as gui file = r'D:\CloudMusic\G.E.M.邓紫棋,艾热 - 光年之外 (热爱版).mp3' #这里为音乐文件路径 pygame.mixer.init() gui.msgbox("正在播放"+file) track = pygame.mixer.music.load(file) pygame.mixer.music.play() time.sl

  • Android媒体开发之音乐播放器

    本文实例为大家分享了Android媒体开发之音乐播放器的具体代码,供大家参考,具体内容如下 可以对音乐文件实现播放.暂停.重播和停止功能.退出应用和回到桌面时音乐停止. 主界面: 主界面配置文件mian.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro

  • 基于jQuery实现歌词滚动版音乐播放器的代码

    先给大家看下效果图,感兴趣的朋友可以参考实现代码 核心代码如下所示: $.ajax({ url: "/music/music.txt", type: "get", success: function(data) { data = jQuery.parseJSON(data); var length = data.length; var now=0; for (i = 0; i < length; i++) { $("#musicText li&quo

  • 基于vue-element组件实现音乐播放器功能

    最近在写一个基于 github-page 和 gist 的博客, 想加个音乐播放器, 做了一个早上, 发出来分享一下 演示地址 https://github-laziji.github.io 效果 使用到的组件 element组件 布局 Layout 按钮 Button 滑块 Slider 进度条 Progress 弹出框 Popover html5组件 audio 实现代码 更详细的实现可以看 https://github.com/GitHub-Laziji/vblog <template>

  • 基于Python实现本地音乐播放器的制作

    制作这个播放器的目的是为了将下载下来的mp3文件进行随机或是顺序的播放.选择需要播放的音乐的路径,选择播放方式,经过测试可以完美的播放本地音乐. 在开始之前介绍一个免费下载mp3音乐的网站,有需要的可以下载自己喜欢的音乐.当然有各大音乐平台会员的大佬就不需要了. 缺少音乐素材的可以去免费下载即可,准备好音乐素材后将其放到一个文件夹下面即可. 在应用实现过程中,总共使用了下面这些库,特别需要注意的是这个库playsound使用的版本是1.3.0,听说其他版本在播放音乐时可能存在问题.也可以将播放音

随机推荐