初学C#记录历程,记录心情。

添加FolderBrowserDialog: folderBrowserDialog, 属性RootFolder 为Desktop,ShowNewFolderButton 为True

UI:

View Code

  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:以文件夹的形式添加整个文件夹里面的文件到播放列表,播放刚加进来的第一首歌曲,默认顺序播放...相关推荐

  1. html给视频加音乐播放器,给视频加背景音乐 ppt如何添加视频加背景音乐-简单实现...

    我们在使用PowerPoint(简称PPT)时,根据需求有时候需要加入视频和ppt如何添加视频加背景音乐的方法有很多,这里就说说简单实现的一种方法,还有比较实用的狸窝PPT转换器PPT转换视频的教程贴 ...

  2. FFmpeg开发XPlay2.0播放器-03 FFmpeg解码

    1 avcodec_find_decoder 查找解码器 使用前先调用avcodec_register_all(); /*** Register all the codecs, parsers and ...

  3. python 定时播放音乐_python – 如何在第一首歌曲结束后安排音频文件在pygame中自动播放?...

    将您的音乐文件(路径)放入列表,定义自定义使用事件并调用 pygame.mixer.music.set_endevent(YOUR_USEREVENT).然后,当歌曲结束时,pygame会将此事件添加 ...

  4. 苹果cms采集后怎么添加或是导入播放器

    没有选中播放片源无法播放?? 有的朋友采集资源后,播放片源没有自动选择对应的数据没有播放按钮,无法播放.这种情况通常是因为没有添加对应的播放器导致!  需要先在网站后台添加导入对应的播放器,才可以实现 ...

  5. android 小型音乐播放器(实现播放、下一首、上一首、自动播放、随机播放按钮、当前播放歌曲界面)

    该文章主要针对 android 的音乐播放器软件进行简单的功能添加:播放.断点播放.停止.上一曲.下一曲.随机播放.显示当前播放歌曲(后续会为当前显示的播放添加动画): 软件开发流程: 1.先向内存卡 ...

  6. 炫 音乐可视化 html5 在线,HTML5打造的炫酷本地音乐播放器-喵喵Player

    将之前捣腾的音乐频谱效果加上一个播放列表就成了现在的喵喵播放器(Meow meow Player,额知道这名字很二很装萌~),全HTML5打造的网页程序,可本地运行也可以挂服务器上用. 在线Demo及 ...

  7. android 高仿酷狗源码,项目源码--Android类似酷狗音乐播放器

    知识技能概要: 1.音乐文件的扫描与管理 2.音频流的解码 3. UI控件的综合使用 4.播放列表方式管理 5.随机播放方式 6.源码带详细的中文注释 ...... 详细介绍 1.音乐文件的扫描与管理 ...

  8. 音乐播放器:打开文件对话框

    制作了一个简单的音乐播放器.具有打开电脑里面的文件,选择歌曲播放 主要是为了掌握,打开文件夹,选择文件的 1 private void Frm_Load(object sender, EventArg ...

  9. 利用DirectShow开发C#版的音频文件播放器(补充完善)

    继今年三月份利用DirectShow开发C#版的音频文件播放器(三)文章之后,一直希望对这个音频文件播放器所存在的一些问题做修改完善,可惜一直忙于工作而无暇顾及这个事情.近日,有读者朋友提到了这个问题 ...

最新文章

  1. 用_beginthreadex不用 CreateThread
  2. listview里怎么加按钮_一张照片出现好多分身,这怎么做的?
  3. 不要以自己的想法来推测别人的行为
  4. php 进行http请求,PHP模拟http请求的方法详解
  5. Frida之安装和使用教程
  6. MyEclipse 2015 CI
  7. 企业级代码静态测试工具Helix QAC——从应用层级保证代码质量和安全
  8. 多线程读文本写入OracleNoSQL数据库
  9. word自带参考文献标注功能
  10. 〖Python WEB 自动化测试实战篇⑤〗- selenium 元素定位详解 - (八大元素定位方式)
  11. 微信小程序音频功能开发实(cai)践(keng)
  12. 详解变频器、逆变器工作原理
  13. JVM学习教程,带你轻松掌握Java虚拟机,吊打面试官
  14. Spring Boot 定制横幅banner与关闭banner
  15. DB2遇到这样一个问题 。 ‘’Operation not allowed for reason code 7 on table DB2ADMIN.XXX. SQLSTATE=5701‘’
  16. 美拉德不做鬼佬BBQ,只做中国餐饮文化
  17. 阿里云ecs配置ssh
  18. QT 中控件缩放比列设置
  19. 美味连连-QQ游戏辅助-简单实用的QQ游戏美味连连辅助(非外挂)
  20. 科研日志——使用opencv提取视频中的人脸

热门文章

  1. UVa11402 Ahoy, Pirates!
  2. hdu1521 排列组合
  3. 网络编程学习笔记(TCP回射服务器程序修订版)
  4. QA测试工程师思维导图
  5. bzoj1433: [ZJOI2009]假期的宿舍
  6. BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流
  7. 【转】Virtualbox虚拟机配置安装CentOS 6.5图文教程
  8. The MIT License (MIT)
  9. springMVC获取file,几种转换
  10. 使用memcache的session入库