当前位置:首页>编程日记>正文

播放器03:以文件夹的形式添加整个文件夹里面的文件到播放列表,播放刚加进来的第一首歌曲,默认顺序播放...

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

 

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

UI:

播放器03:以文件夹的形式添加整个文件夹里面的文件到播放列表,播放刚加进来的第一首歌曲,默认顺序播放... 配图01

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

" + ex.Message);
159                                                         }
160                                                     }
161 
162                                                  OrderPlay();   //默认顺序播放 
163                                  
164                                                 }
165                                
166                                             }
167                                         }

http://www.coolblog.cn/news/e8c6635cd0b517f6.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • 2019-9
  • jquery 使用小技巧
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • linux批量创建用户和密码
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • js常用阻止冒泡事件
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • 【设计模式】 模式PK:策略模式VS状态模式
  • JS实现-页面数据无限加载
  • CSS小技巧——CSS滚动条美化
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里巴巴分布式服务框架 Dubbo
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 两张超级大表join优化
  • Arm芯片的新革命在缓缓上演
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • 《看透springmvc源码分析与实践》读书笔记一
  • nagios自写插件—check_file
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • python3 错误 Max retries exceeded with url 解决方法
  • 通过Spark进行ALS离线和Stream实时推荐
  • 行为模式之Template Method模式