一、功能需求
- 播放
MP3文件:可播放MP3文件 - 播放
OGG文件:可播放OGG文件 - 用户界面:一个简单的窗口,包含播放和暂停按钮及文件选择功能
- 异常处理:程序能处理可能处理可能出现的异常,如文件不存在、文件读取错误等
- 兼容性:确保代码能在多个c#版本上运行
二、设计思路分析
-
架构选择
考虑到需求中的界面友好和跨版本兼容性,我们可以选择选择
Windows Forms作为开发平台,Windows Forms提供了一个简单而强大的方法来创建桌面应用程序,并且与C#高度兼容,在开发过程,我们选择.NETFramework 4.8.0进行程序设计。 -
设计思路
- 界面设计: 使用
Windows Forms工具箱中的控件如按钮、标签和文件对话框构建用户界面。 - 功能编码: 使用
OpenFileDialog允许用户选择音频文件。 根据文件扩展名调用相应的播放器对象进行播放。 播放控制,包括开始、暂停和停止。 - 异常处理: 捕获并响应各种可能的运行时错误,如文件读取失败、文件格式不支持等,为用户提供清晰的错误信息。
- 界面设计: 使用
-
难点分析
- 文件格式支持: 处理多种音频格式(
MP3,OGG等)要求使用不同的库,这可能导致代码复杂度增加。 - 异常处理: 音频文件的播放中可能遇到多种异常情况,如文件损坏、编解码器不支持等。
- 文件格式支持: 处理多种音频格式(
三、窗体设计
按照需求设计窗体,并进行一定的美化

- Label:展示当前播放的歌曲
- Listbox:展示歌曲列表
- AxWindowsMediaPlayer:播放常规音乐
- Button:选择歌曲文件、停止播放、下一曲
- TraceBarl:用于音量控制
四、代码实现
-
头文件引入
using AxWMPLib; using NAudio.Vorbis; using NAudio.Wave; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection.Emit; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using static System.Windows.Forms.VisualStyles.VisualStyleElement; -
类成员变量定义
List<string> localmusiclist = new List<string> { }; private WaveOutEvent waveOut = new WaveOutEvent(); private VorbisWaveReader currentVorbisReader;在类中,
localmusiclist在音乐播放时用来追踪和管理用户加载的音乐文件集合,waveOut用于播放ogg文件,currentVorbisReader为当前播放ogg文件的状态 -
按钮控件
-
歌曲文件选择
private void button1_Click(object sender, EventArgs e) { string[] files = { }; openFileDialog1.Filter = "选择音频|*.mp3;*.flac;*.wav;*.ogg"; //同时打开多个文件 openFileDialog1.Multiselect = true; if (openFileDialog1.ShowDialog()
-

最低0.47元/天 解锁文章
1503





