首页 > 其他分享 >音乐播放器

音乐播放器

时间:2023-05-03 16:12:54浏览次数:40  
标签:播放器 sender void 音乐 System private selectedIndex using

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using WMPLib;

namespace musicPlayer
{
    public partial class Form1 : Form
    {

        //声明一个list存储文件路径
        List<string> urlList = new List<string>();
        double max, min;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {

        }
        //添加歌曲
        private void music_put_Click(object sender, EventArgs e)
        {
            //实例化一个打开文件的对话框
            OpenFileDialog of = new OpenFileDialog();
            //让选择器可以同时选择多个文件
            of.Multiselect = true;
            of.Title = "请选择音乐文件";
            //指定文件类型
            of.Filter = "(*.mp3)|*.mp3";

            //of.ShowDialog();//弹出文件对话框的

            if(of.ShowDialog()==DialogResult.OK)
            {
                //读取文件 存储到数组
                string[] nameList = of.FileNames;
                //读取数组中的数据
                foreach(string url in nameList)
                {
                    //Path.GetFileNameWithoutExtension(url);
                    listBoxMusics.Items.Add(Path.GetFileNameWithoutExtension(url));
                    //获取歌曲路径,存在List数组中
                    urlList.Add(url);
                }
            }
        }
        //播放音乐
        private void play_Click(object sender, EventArgs e)
        {
            //看之前有没有选中,有——从选中播出,没有——从0开始播出
            int selectedIndex = listBoxMusics.SelectedIndex;

            //这是为了暂停键做的判断 测试结果:没选时selectedIndex=-1
            if (selectedIndex < 0)
            {
                selectedIndex = selectedIndex < 0 ? 0 : selectedIndex;

                //更新选中行 重新设置当前选择行的索引
                listBoxMusics.SelectedIndex = selectedIndex;
                //把获取的索引赋值给播放器控件
                axWindowsMediaPlayer1.URL = urlList[selectedIndex];
                //移动选中栏到相应位置
                musicPlayername.Text = listBoxMusics.SelectedItem.ToString();
            }
            else
            {
                axWindowsMediaPlayer1.Ctlcontrols.play();
            }
            timer1.Enabled = true;
        }
        //歌曲暂停
        private void pause_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Ctlcontrols.pause();
        }
        //停止播放
        private void stop_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Ctlcontrols.stop();
            timer1.Enabled = false;//停止记录,不然跳到下一首歌
        }
        //上一曲
        private void last_Click(object sender, EventArgs e)
        {
            //上一曲就是当前歌曲的索引减一   
            int selectedIndex = listBoxMusics.SelectedIndex-1;

            //假设有三首歌,总数为3 索引为0 1 2
            //不循环,一直停在第一首
            //selectedIndex = selectedIndex < 0 ? 0 : selectedIndex;

            //循环
            selectedIndex = selectedIndex < 0 ? listBoxMusics.Items.Count-1: selectedIndex;


            //更新选中行 重新设置当前选择行的索引
            listBoxMusics.SelectedIndex = selectedIndex;
            //把获取的索引赋值给播放器控件
            axWindowsMediaPlayer1.URL = urlList[selectedIndex];
            //移动选中栏到相应位置
            musicPlayername.Text = listBoxMusics.SelectedItem.ToString();
        }
        //下一曲
        private void next_Click(object sender, EventArgs e)
        {          //下一曲就是当前歌曲的索引加一   
            int selectedIndex = listBoxMusics.SelectedIndex +1;

            //假设有三首歌,总数为3 索引为0 1 2

            //不循环,一直停在最后一首
            //selectedIndex = selectedIndex <listBoxMusics.Items.Count?selectedIndex:listBoxMusics.Items.Count-1;

            //循环
            selectedIndex = selectedIndex < listBoxMusics.Items.Count ? selectedIndex :0;

            //更新选中行 重新设置当前选择行的索引
            listBoxMusics.SelectedIndex = selectedIndex;
            //把获取的索引赋值给播放器控件
            axWindowsMediaPlayer1.URL = urlList[selectedIndex];
            //移动选中栏到相应位置
            musicPlayername.Text = listBoxMusics.SelectedItem.ToString();
        }
        //列表发生变化选择播放的歌曲
        private void listBoxMusics_SelectedIndexChanged(object sender, EventArgs e)
        {
            //获取当前选中歌曲索引
            int selectedIndex = listBoxMusics.SelectedIndex;
            //把获取的索引赋值给播放器控件
            axWindowsMediaPlayer1.URL = urlList[selectedIndex];
        }

        private void axWindowsMediaPlayer1_Enter(object sender, EventArgs e)
        {

        }

        private void musicPlayername_Click(object sender, EventArgs e)
        {

        }

        //鼠标按下
        private void trackBar1_MouseDown(object sender, MouseEventArgs e)
        {
            //鼠标按下时,获取播放时的位置
            timer1.Enabled = false;
            axWindowsMediaPlayer1.Ctlcontrols.pause();

        }

        //鼠标抬起
        private void trackBar1_MouseUp(object sender, MouseEventArgs e)
        {
            //获取被拖动以后的位置
            double doValue = trackBar1.Value;
            //重置播放位置
            axWindowsMediaPlayer1.Ctlcontrols.currentPosition = doValue;
            axWindowsMediaPlayer1.Ctlcontrols.play();
            timer1.Enabled = true;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //获取文件长度 时间长度
            max = axWindowsMediaPlayer1.currentMedia.duration;
            //获取当前歌曲播放位置
            min = axWindowsMediaPlayer1.Ctlcontrols.currentPosition;

            //类型强转
            trackBar1.Maximum = (int)(max);
            trackBar1.Value = (int)(min);

            //一首歌播放完,播放下一首
            if(axWindowsMediaPlayer1.playState==WMPPlayState.wmppsStopped)
            {
                int selectedIndex = listBoxMusics.SelectedIndex + 1;
                //不循环
                //selectedIndex = selectedIndex < listBoxMusics.Items.Count ? selectedIndex : listBoxMusics.Items.Count - 1;

                //循环
                selectedIndex = selectedIndex < listBoxMusics.Items.Count ? selectedIndex : 0;

                axWindowsMediaPlayer1.URL = urlList[selectedIndex];
                listBoxMusics.SelectedIndex = selectedIndex;//选中
                musicPlayername.Text = listBoxMusics.SelectedItem.ToString();
                trackBar1.Value = 0;
                timer1.Enabled = true;
            }
        }
    }
}

自看随笔,直接赋值用不了。

环境:vs2019 

C# winfrom

标签:播放器,sender,void,音乐,System,private,selectedIndex,using
From: https://www.cnblogs.com/qingfeng66/p/17369179.html

相关文章

  • real love! 篮球&音乐&相声
    我觉得我配得上真正热爱,回想起来,看球也10年了,无时无刻,甚至想无时无刻看球,看新闻,这十年间很多场景新闻都在木,有时候再看集锦时总有,这场我看过直播,我知道当时是怎么回事。前两个看了一个心理学,上瘾心理学,或者兴趣心理。就是一点点重复奖励,比如投球,投一个,进了,投第二个,进了,第三个,没进......
  • 腾讯音乐SQL题
    1.计算歌曲完播率请根据user_listen_record、song_library计算出QQ音乐20230306歌曲完播率(播放时长>=听歌时长)输出表结构如下,其中完播率保留小数点后2位小数并按照完播率重小到大排序:song_playback_history已知QQ音乐部分用户听歌流水表格式和样例数据如下:user_listen_rec......
  • 2023年最新FL21水果音乐制作软件FL Studio 21中文版强悍来袭
    FLStudio21是一款无可挑剔并且适用于多种领域的音频编辑软件。这款软件支持多声道混音器和VST插件,包括上百种乐器和效果插件,还为大家提供了一个音符编辑器,可以根据作曲家的要求编辑不同乐器的节奏,如鼓、钹、锣、钢琴、筝、扬琴等的节奏。内置许多电子合成音色,只有斯泰鲁能让人兴......
  • 一个WPF开发的、界面简洁漂亮的音频播放器
    今天推荐一个界面简洁、美观的、支持国际化开源音频播放器。项目简介这是一个基于C#+WPF开发的,界面外观简洁大方,操作体验良好的音频播放器。支持各种音频格式,包括:MP4、WMA、OGG、FLAC、M4A、AAC、WAV、APE和OPUS;支持标记、实时显示歌词等功能;支持换肤、中英文等主流语言。......
  • 关于一些在EasyX图形库上的音乐播放问题
    首先需要包含两个头文件    ①#include<graphics.h>        ②#include<mmsystem.h>                    ③#pragmacomment(lib,"winmm.lib")     (因为使用的是windows的设备,就需要包含windows.h头文件,但是graphi......
  • Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)
    一、前言本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个文件服务器,用户通过网络地址访问以后,告诉对方当前是媒体文件就会自动播放,是其他......
  • 利用Arduino制作音乐播放+随节奏闪光仪器实现
    1.实验器材Arduino开发板,面包板一块,杜邦线若干,LED灯若干,220欧电阻若干,蜂鸣器一个。2.实验操作将六个led灯的正极依次接到arduino板I/O接口的2-7口,电源负极依分别接一个220欧的电阻。整体负极接arduino板的GND接口。蜂鸣器正极接arduino板I/O接口的8口,负极接GND。3.代码......
  • 音频格式转换器!电脑喜马拉雅音乐格式转mp3
    你是否遇到过想下载喜马拉雅音频专辑,但发现无法下载或者下载音乐格式不是mp3的情况?这时,你就需要一个专业的喜马拉雅mp3音乐格式转换工具。 推荐一款实用的喜马拉雅音乐专辑下载和转换工具。该工具可以帮助用户轻松下载喜马拉雅上的音频资源,支持无损下载,高音质下载,同时提供了多......
  • 基于SpringBoot+Vue的音乐网站
    本次项目是基于SpringBoot+Vue的前后端分离项目,旨在熟练相关框架,掌握相关技术,拓展个人知识面。音乐来源:本地用户页面:Web项目亮点:根据歌词、音乐旋律、定位时间线(老师的意见)确定好方向,开始项目、收集资料、准备相关的开发环境和软件等。了解项目的结构与逻辑,确定基本功能,需求......
  • 一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取
    前几天小编给大家分享了数据可视化分析,在文尾提及了网易云音乐歌词爬取,今天小编给大家分享网易云音乐歌词爬取方法。本文的总体思路如下:找到正确的URL,获取源码;利用bs4解析源码,获取歌曲名和歌曲ID;调用网易云歌曲API,获取歌词;将歌词写入文件,并存入本地。本文的目的是获取网易云......