简单的音乐播放器实现其实并不难,直接用axWindowsmediaplayer来做,这里没有什么技术含量的,但是axWindowsmediaplayer是不会生成歌单列表的,也就是说,在每次添加音乐后axWindowsmediaplayer是没有记录的,那么我就来简单的做下歌单列表。
axWindowsmediaplayer的工作原理其实就是根据Path来加载的,在写歌单时我们需要先来做两件事,1、存储歌曲Path 2、存储歌曲名字 这里暂且不考虑数据库,我使用IO操作通过txt文件来存储这两种信息。
思路过程:
判断文件是否存在 -----存在 ------ 写入流存入数据 ------更新ListBox
-----不存在 ------创建两个文件 ------- 写入流存入数据 ------更新ListBox
这都不是问题,重点在我们必须使用两个ListBox,一个显示歌名,一个存入路径,并且要使两个ListBox相关联
IO操作代码:
1 public void IOStreamName() 2 { 3 if (File.Exists(NamePath)) 4 { 5 // 存入文件名 6 // MessageBox.Show("1存在!"); 7 StreamWriter NameWriter = new StreamWriter(NamePath,true); 8 if (ListSafeFileName.Items.Count > 0) 9 { 10 for (int i = 0; i < ListSafeFileName.Items.Count; i++) 11 { 12 NameWriter.WriteLine(ListSafeFileName.Items [ListSafeFileName .Items .Count -1].ToString () ); 13 break; 14 } 15 NameWriter.Close(); 16 } 17 } 18 else 19 { 20 // 创建文件名文件 21 FileStream SafeFileName = new FileStream(NamePath, FileMode.Create); 22 SafeFileName.Close(); 23 StreamWriter NameWriter = new StreamWriter(NamePath); 24 for (int i = 0; i < ListSafeFileName.Items.Count; i++) 25 { 26 NameWriter.WriteLine(ListSafeFileName.Items[ListSafeFileName.Items.Count - 1].ToString()); 27 } 28 NameWriter.Close(); 29 30 } 31 }
IOStreamName
1 public void IOStreamFileName() 2 { 3 if (File.Exists(FileNamePath)) 4 { 5 // 存入文件路径 6 // MessageBox.Show("2存在!"); 7 StreamWriter FileNameWriter = new StreamWriter(FileNamePath, true); 8 if (ListFileName.Items.Count > 0) 9 { 10 for (int i = 0; i < ListFileName.Items.Count; i++) 11 { 12 FileNameWriter.WriteLine(ListFileName.Items[ListFileName.Items.Count - 1].ToString()); 13 break; 14 } 15 FileNameWriter.Close(); 16 } 17 } 18 else 19 { 20 // 创建路径文件 21 FileStream FileName = new FileStream(FileNamePath, FileMode.Create); 22 FileName.Close(); 23 StreamWriter FileNameWriter = new StreamWriter(FileNamePath); 24 for (int i = 0; i < ListFileName.Items.Count; i++) 25 { 26 FileNameWriter.WriteLine(ListFileName.Items[ListFileName.Items.Count - 1].ToString()); 27 } 28 FileNameWriter.Close(); 29 30 } 31 }
IOStreamFileName
ListBox关联思路
1 private void ListSafeFileName_MouseDoubleClick(object sender, MouseEventArgs e) 2 { 3 if (ListSafeFileName.SelectedIndex >= 0) 4 { 5 ListFileName.SelectedIndex = ListSafeFileName.SelectedIndex; 6 WinPlayer.URL = ListFileName.SelectedItem.ToString(); 7 } 8 }
ListSafeFileName
启动即更新列表 (这里要说下,更新,我写了两个函数,这里的算法是比较经典的,是真的把ListBox玩出了花,代码写到这其实是最过瘾的)
1 public void IOStreamReadName() 2 { 3 if (File.Exists(NamePath)) 4 { 5 StreamReader MusicName = new StreamReader(NamePath); 6 string[] TxtData = File.ReadAllLines(NamePath); 7 for (int i = 0; i < TxtData.Length; i++) 8 { 9 ListSafeFileName.Items.Add(MusicName.ReadLine()); 10 } 11 MusicName.Close(); 12 } 13 14 }
IOStreamReadName
1 public void IOStreamReadFileName() 2 { 3 if (File.Exists(FileNamePath)) 4 { 5 StreamReader MusicFileName = new StreamReader(FileNamePath); 6 string[] TxtData = File.ReadAllLines(FileNamePath); 7 for (int i = 0; i < TxtData.Length; i++) 8 { 9 ListFileName.Items.Add(MusicFileName.ReadLine()); 10 } 11 MusicFileName.Close(); 12 } 13 }
IOStreamReadFileName
这里贴出来的都是核心代码了,其实后来想想txt文件是不便于管理的,用泛型集合也挺好,有待改进吧。
时间: 2024-10-13 17:03:49