需求


我们平时工作休闲之余往往会选择听一些歌曲休闲。但我们是否想过这些音乐播放器是怎么做的呢?你是否想动手试一试呢?

功能


实现音乐播放器的基本功能,可以选择文件播放,也可以拖拉文件播放。实现音乐播放器的常规功能。
本项目中,使用的是.wav文件。


watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjI5MTA5,size_16,color_FFFFFF,t_70#pic_center.jpg
实现
首先。我们需要在VS中建立一个Windows窗体应用工程,自主进行页面设计。
之后进行代码的编写。我将主要的功能代码放在下面,大家可以自主运行。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.IO;        //Path类用到
  11. using System.Media;    //SoundPlayer命名空间
  12. namespace player
  13. {
  14.     public partial class Form1 : Form
  15.     {
  16.         public Form1()
  17.         {
  18.             InitializeComponent();
  19.         }
  20.         List<string> listsongs = new List<string>();   //用来存储音乐文件的全路径
  21.         private void button1_Click(object sender, EventArgs e)
  22.         {
  23.             OpenFileDialog ofd = new OpenFileDialog();
  24.             ofd.Title = "请选择音乐文件";      //打开对话框的标题
  25.             ofd.InitialDirectory = @"F:\music";    //设置打开对话框的初始设置目录
  26.             ofd.Multiselect = true; //设置多选
  27.             ofd.Filter = @"音乐文件|*.mp3||*.wav|所有文件|*.*";    //设置文件格式筛选
  28.             ofd.ShowDialog();   //显示打开对话框
  29.             string[] pa_th = ofd.FileNames;       //获得在文件夹中选择的所有文件的全路径
  30.             for (int i = 0; i < pa_th.Length;i++ )
  31.             {
  32.                 listBox1.Items.Add(Path.GetFileName(pa_th[i]));  //将音乐文件的文件名加载到listBox中
  33.                 listsongs.Add(pa_th[i]);    //将音乐文件的全路径存储到泛型集合中
  34.             }
  35.         }
  36.         SoundPlayer sp = new SoundPlayer();
  37.         private void listBox1_DoubleClick(object sender, EventArgs e)
  38.         {
  39.             SoundPlayer sp = new SoundPlayer();
  40.             sp.SoundLocation = listsongs[listBox1.SelectedIndex];
  41.             sp.Play();
  42.         }
  43.         private void button2_Click(object sender, EventArgs e)
  44.         {
  45.             int index = listBox1.SelectedIndex; //获得当前选中歌曲的索引
  46.             index--;
  47.             if (index <0)
  48.             {
  49.                 index = listBox1.Items.Count-1;
  50.             }
  51.             listBox1.SelectedIndex = index; //将改变后的索引重新赋值给我当前选中项的索引
  52.             sp.SoundLocation = listsongs[index];
  53.             sp.Play();
  54.         }
  55.         private void button3_Click(object sender, EventArgs e)
  56.         {
  57.               int index = listBox1.SelectedIndex; //获得当前选中歌曲的索引
  58.             index++;
  59.             if (index==listBox1.Items.Count)
  60.             {
  61.                 index = 0;
  62.             }
  63.             listBox1.SelectedIndex = index; //将改变后的索引重新赋值给我当前选中项的索引
  64.             sp.SoundLocation = listsongs[index];
  65.             sp.Play();
  66.         }
  67.         private void Form1_DragEnter(object sender, DragEventArgs e)
  68.         {
  69.             if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Link;
  70.             else e.Effect = DragDropEffects.None;
  71.         }
  72.         private void Form1_DragDrop(object sender, DragEventArgs e)
  73.         {
  74.             string[] filePath = (string[])e.Data.GetData(DataFormats.FileDrop);
  75.             foreach (string file in filePath)
  76.             {
  77.                 //file就是单个文件路径
  78.                 SoundPlayer sp = new SoundPlayer();
  79.                 sp.SoundLocation = file;
  80.                 sp.Play();
  81.               //  MessageBox.Show(file);
  82.             }
  83.         }
  84.         private void button4_Click(object sender, EventArgs e)
  85.         {
  86.             SoundPlayer sp = new SoundPlayer();
  87.             if (listBox1.SelectedIndex > 0)
  88.                 sp.SoundLocation = listsongs[listBox1.SelectedIndex];
  89.             sp.Play();
  90.         }
  91.         private void groupBox2_Enter(object sender, EventArgs e)
  92.         {
  93.         }
  94.         private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
  95.         {
  96.         }
  97.         private void Form1_Load(object sender, EventArgs e)
  98.         {
  99.         }
  100.     }
  101. }
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjI5MTA5,size_16,color_FFFFFF,t_70#pic_center.jpg