2009-03-29 4 views
0

Я строю музыкальный плеер, поэтому я решил использовать библиотеку Window Media Player: Теперь я застрял, потому что хочу показать название песни в спискеBox и сменить песни в режиме реального времени но я не знаю, как это происходит. Я храню песни из папки, поэтому, когда Music Player запускает песни из Url, выберите. я покажу вам фрагмент кода:Window Media PLayer в C#

 private void PlaylistMidday(String folder, string extendsion) 
    { 
     string myPlaylist = "D:\\Music\\The_Chemical_Brothers-Do_It_Again-(US_CDM)-2007-SAW\\"; 
     ListView musicList = new ListView(); 

     WMPLib.IWMPPlaylist pl; 

     WMPLib.IWMPPlaylistArray plItems; 

     plItems = player1.playlistCollection.getByName(myPlaylist); 

     if (plItems.count == 0) 

      pl = player1.playlistCollection.newPlaylist(myPlaylist); 

     else 

      pl = plItems.Item(0); 

     DirectoryInfo dir = new DirectoryInfo(folder); 

     FileInfo[] files = dir.GetFiles(extendsion, SearchOption.AllDirectories); 

     foreach (FileInfo file in files) 
     { 

      string musicFile01 = file.FullName; 

      string mName = file.Name; 

      ListViewItem item = new ListViewItem(mName); 

      musicList.Items.Add(item); 

      WMPLib.IWMPMedia m1 = player1.newMedia(musicFile01); 

      pl.appendItem(m1); 

     } 

     player1.currentPlaylist = pl; 

     player1.Ctlcontrols.play(); 

    } 

На нагрузке я решил играть песни из «myPLaylist», так что я прошу вас сделать вы знаете какой-то способ, как показать песни моего плейлиста в ListBox и когда я нажмите на выбранный элемент, я изменю песни?

Thansk для вашей поддержки.

Nice Привет

ответ

1

Вместо добавления песен в плейлист, вы можете добавить их в List<string> в качестве возвращаемого значения. В событии загрузки вы просто вызываете метод, который получает список путей файлов мультимедиа в папке, а затем добавляете их в список.

Чтобы изменить песню, которую играют, вам просто нужно добавить SelectedValueChanged/SelectedItemChanged события, и в этом случае, получить путь к файлу, который выбран в данный момент в ListBox, то есть WMP играла для вас :)

private void Form1_Load(object sender, EventArgs e) 
     { 

      List<string> str = GetListOfFiles(@"D:\Music\Bee Gees - Their Greatest Hits - The Record"); 
      listBox1.DataSource = str; 
      listBox1.DisplayMember = "str"; 


     } 

     private List<string> GetListOfFiles(string Folder) 
     { 
      DirectoryInfo dir = new DirectoryInfo(Folder); 
      FileInfo[] files = dir.GetFiles("*.mp3", SearchOption.AllDirectories); 
      List<string> str = new List<string>(); 
      foreach (FileInfo file in files) 
      {        
       str.Add(file.FullName);     

      } 
      return str; 
     } 

     private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      string strSelected = listBox1.SelectedValue.ToString(); 
      MessageBox.Show(strSelected); //Just demo, you can add code that have WMP played this file here 
     } 

быстрое решение. :). Не очень хорошо, но это работает. Помогите этой надежде

+0

Hi Vimvq вы можете опубликовать фрагмент кода об этом? Извините, что я новый в C#, Спасибо Vimvq – JayJay

+0

Привет, я поместил другой плейлист, потому что их нужно играть в разное время с помощью таймера, который вызывает плейлист в нужное время. :) – JayJay

+0

Я просто добавил демо-код. Быстрый (и, возможно, грязный) код. Теперь я должен лечь спать :). Рад, что это может помочь – Vimvq1987