zoukankan      html  css  js  c++  java
  • C#简单音乐播放器ListBox歌单列表

         简单的音乐播放器实现其实并不难,直接用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文件是不便于管理的,用泛型集合也挺好,有待改进吧。

  • 相关阅读:
    Debian/Kali下Subversion的配置
    Linux下解压Windows中的压缩包乱码解决办法
    JavaSocket全双工通信 问题 待解决
    MYSQL学习笔记
    Java Socket 全双工通信
    Kali2017安装后的那些事
    nginx的一次安装与配置
    解决1130 Host 'localhost' is not allowed to connect to this MySQL server
    SimpleDateFormat 和 LocalDate、LocalTime 以及时间大小比较简单示例
    java 线程池 ExeutorService
  • 原文地址:https://www.cnblogs.com/heiloe/p/4224621.html
Copyright © 2011-2022 走看看