播放器03:以文件夹的形式添加整个文件夹里面的文件到播放列表,播放刚加进来的第一首歌曲,默认顺序播放...
初学C#记录历程,记录心情。
添加FolderBrowserDialog: folderBrowserDialog, 属性RootFolder 为Desktop,ShowNewFolderButton 为True
UI:
![](/assets/blank.gif)
![](/assets/blank.gif)
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.Windows.Forms; 9 using System.Threading; 10 using System.IO; 11 12 namespace OrderPlay 13 { 14 public partial class myAudioPlayer : Form 15 { 16 17 private bool close = false;// 关闭窗口标志位 18 private bool running = false;//线程结束标志位 19 protected List<string> playList = new List<string>(); //定义一个list来保存加进到listbox里面的文件 20 21 22 //去掉文件路径,只留文件名字 23 public string DeletePath(string strName) 24 { 25 string afterDeletePath = ""; 26 int lastIndex=0; 27 lastIndex= strName.LastIndexOf("\\") + 1; //获取\ 在tempFileName中最后一次出现的索引位置 28 afterDeletePath = strName.Substring(lastIndex, strName.Length - lastIndex);//去掉文件路径,只取文件名字(取子字符串) 29 return afterDeletePath; 30 } 31 32 33 34 private void SaveFilesFolder() 35 { 36 string[] folderName = Directory.GetFiles(this.folderBrowserDialog.SelectedPath); 37 foreach (string f in folderName) 38 { 39 40 if (playList.Contains(f) == true) //不加重复的 41 { 42 continue; 43 } 44 else 45 { 46 playList.Add(f); 47 lstPlayer.Items.Add(DeletePath(f)); 48 49 } 50 51 } 52 53 } 54 //设置正在播放的歌曲为选中状态 55 private void PlaySelected() 56 { 57 int i=0; 58 for (i = 0; i < lstPlayer.Items.Count; i++) 59 { 60 if (mediaPlayer.URL == playList[i]) 61 { 62 lstPlayer.SetSelected(i,true); 63 } 64 } 65 66 } 67 68 //顺序播放 69 private void OrderPlay() 70 { 71 if (!running) 72 { 73 // 启动另一线程检测 mediaPlayer 的播放状态,循环播放列表里的歌曲 74 running = true; 75 Thread thread = new Thread(new ThreadStart(this.CheckStatus)); 76 thread.IsBackground = false; //设置后台线程为false 77 thread.Start(); 78 } 79 } 80 81 82 //检查线程状态,顺序播放 83 private void CheckStatus() 84 { 85 while (running && !close) 86 { 87 try 88 { 89 if (mediaPlayer.playState == WMPLib.WMPPlayState.wmppsStopped && lstPlayer.Items.Count > 0) //是否播放停止且列表有文件 90 { 91 if (lstPlayer.InvokeRequired) //是否跨线程 92 { 93 lstPlayer.BeginInvoke(new MethodInvoker(() =>//BeginInvoke方法可以使用线程异步地执行委托所指向的方法 94 { 95 SetSelectedIndex(); 96 97 }), null); 98 } 99 else 100 { 101 SetSelectedIndex(); 102 103 } 104 105 } 106 107 } 108 catch (Exception ex) 109 { 110 MessageBox.Show("出错" + ex.ToString()); 111 } 112 System.Threading.Thread.Sleep(1000);//状态检测延时1秒,加快打开歌曲的速度 113 } 114 running = false; 115 116 117 } 118 119 //判断是否到最后一个,否则下移 120 private void SetSelectedIndex() 121 { 122 123 if (lstPlayer.SelectedIndex + 1 >= lstPlayer.Items.Count) //是否到最下面 124 { 125 lstPlayer.SelectedIndex = 0; //回到第一个 126 } 127 else 128 { 129 lstPlayer.SelectedIndex = lstPlayer.SelectedIndex + 1; //下移 130 } 131 132 mediaPlayer.URL = playList[lstPlayer.SelectedIndex]; //播放 133 134 } 135 136 public myAudioPlayer() 137 { 138 InitializeComponent(); 139 mediaPlayer.uiMode = "Full"; 140 } 141 142 143 private void addFolderToolStripMenuItem_Click(object sender, EventArgs e) 144 { 145 DialogResult result=this.folderBrowserDialog.ShowDialog(); 146 string[] folderName = Directory.GetFiles(this.folderBrowserDialog.SelectedPath); 147 148 if(result==DialogResult.OK) 149 { 150 try 151 { 152 SaveFilesFolder(); 153 mediaPlayer.URL = folderName[0]; 154 PlaySelected(); 155 } 156 catch (Exception ex) 157 { 158 MessageBox.Show("unable to load file\n\n" + ex.Message); 159 } 160 } 161 162 OrderPlay(); //默认顺序播放 163 164 } 165 166 } 167 }
转载于:https://www.cnblogs.com/bloomalone/archive/2012/12/20/2826508.html
播放器03:以文件夹的形式添加整个文件夹里面的文件到播放列表,播放刚加进来的第一首歌曲,默认顺序播放...相关推荐
- html给视频加音乐播放器,给视频加背景音乐 ppt如何添加视频加背景音乐-简单实现...
我们在使用PowerPoint(简称PPT)时,根据需求有时候需要加入视频和ppt如何添加视频加背景音乐的方法有很多,这里就说说简单实现的一种方法,还有比较实用的狸窝PPT转换器PPT转换视频的教程贴 ...
- FFmpeg开发XPlay2.0播放器-03 FFmpeg解码
1 avcodec_find_decoder 查找解码器 使用前先调用avcodec_register_all(); /*** Register all the codecs, parsers and ...
- python 定时播放音乐_python – 如何在第一首歌曲结束后安排音频文件在pygame中自动播放?...
将您的音乐文件(路径)放入列表,定义自定义使用事件并调用 pygame.mixer.music.set_endevent(YOUR_USEREVENT).然后,当歌曲结束时,pygame会将此事件添加 ...
- 苹果cms采集后怎么添加或是导入播放器
没有选中播放片源无法播放?? 有的朋友采集资源后,播放片源没有自动选择对应的数据没有播放按钮,无法播放.这种情况通常是因为没有添加对应的播放器导致! 需要先在网站后台添加导入对应的播放器,才可以实现 ...
- android 小型音乐播放器(实现播放、下一首、上一首、自动播放、随机播放按钮、当前播放歌曲界面)
该文章主要针对 android 的音乐播放器软件进行简单的功能添加:播放.断点播放.停止.上一曲.下一曲.随机播放.显示当前播放歌曲(后续会为当前显示的播放添加动画): 软件开发流程: 1.先向内存卡 ...
- 炫 音乐可视化 html5 在线,HTML5打造的炫酷本地音乐播放器-喵喵Player
将之前捣腾的音乐频谱效果加上一个播放列表就成了现在的喵喵播放器(Meow meow Player,额知道这名字很二很装萌~),全HTML5打造的网页程序,可本地运行也可以挂服务器上用. 在线Demo及 ...
- android 高仿酷狗源码,项目源码--Android类似酷狗音乐播放器
知识技能概要: 1.音乐文件的扫描与管理 2.音频流的解码 3. UI控件的综合使用 4.播放列表方式管理 5.随机播放方式 6.源码带详细的中文注释 ...... 详细介绍 1.音乐文件的扫描与管理 ...
- 音乐播放器:打开文件对话框
制作了一个简单的音乐播放器.具有打开电脑里面的文件,选择歌曲播放 主要是为了掌握,打开文件夹,选择文件的 1 private void Frm_Load(object sender, EventArg ...
- 利用DirectShow开发C#版的音频文件播放器(补充完善)
继今年三月份利用DirectShow开发C#版的音频文件播放器(三)文章之后,一直希望对这个音频文件播放器所存在的一些问题做修改完善,可惜一直忙于工作而无暇顾及这个事情.近日,有读者朋友提到了这个问题 ...
最新文章
- 用_beginthreadex不用 CreateThread
- listview里怎么加按钮_一张照片出现好多分身,这怎么做的?
- 不要以自己的想法来推测别人的行为
- php 进行http请求,PHP模拟http请求的方法详解
- Frida之安装和使用教程
- MyEclipse 2015 CI
- 企业级代码静态测试工具Helix QAC——从应用层级保证代码质量和安全
- 多线程读文本写入OracleNoSQL数据库
- word自带参考文献标注功能
- 〖Python WEB 自动化测试实战篇⑤〗- selenium 元素定位详解 - (八大元素定位方式)
- 微信小程序音频功能开发实(cai)践(keng)
- 详解变频器、逆变器工作原理
- JVM学习教程,带你轻松掌握Java虚拟机,吊打面试官
- Spring Boot 定制横幅banner与关闭banner
- DB2遇到这样一个问题 。 ‘’Operation not allowed for reason code 7 on table DB2ADMIN.XXX. SQLSTATE=5701‘’
- 美拉德不做鬼佬BBQ,只做中国餐饮文化
- 阿里云ecs配置ssh
- QT 中控件缩放比列设置
- 美味连连-QQ游戏辅助-简单实用的QQ游戏美味连连辅助(非外挂)
- 科研日志——使用opencv提取视频中的人脸