2012-06-22 44 views
0

我再一次陷入了練習中。 我想打開我的程序時播放MP3文件 - 我可以做到這一點,我有音樂。 我也想要一個允許暫停音樂的複選框 - 但是要麼我很累,要麼就是不能工作 - 當我檢查/取消選中時,沒有任何反應。我已經這樣做了:使用WMP在C#中暫停/播放MP3文件

public void PlayPause(int Status) 
    { 
     WMPLib.WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayer(); 
     switch (Status) 
     { 
      case 0: 
       wmp.URL = "Musik.mp3"; 
       break; 
      case 1: 
       wmp.controls.play(); 
       break; 
      case 2: 
       wmp.controls.pause(); 
       break; 
     } 
    } 

打開程序後,該方法被稱爲情況0.音樂播放。都好。 然而,這不起作用,我不明白爲什麼,因爲它是非常簡單的代碼。

 public void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (checkBox1.Checked == true) 
     { 
      PlayPause(2); 
     } 
     else if (checkBox1.Checked == false) 
     { 
      PlayPause(1); 
     } 
    } 

任何想法爲什麼選中複選框不會暫停/取消暫停音樂?

+1

這可能是因爲您每次調用PlayPause時都會創建一個WindowMediaPlayer的新實例。嘗試移動wmp成爲一個類級別的變量。只需在PlayPause方法之前放置實例化行。 – dash

回答

6

您每次調用PlayPause函數時都會實例化一個全新的WindowsMediaPlayer對象。

因此,稍後再打電話暫停時,您沒有任何暫停。

您需要持有或傳遞對該WMP對象的引用,以便您在同一個對象上運行。

+4

..我很失敗我的考試:3謝謝! – Treelink

+1

很高興爲您提供幫助。如果這個問題解決了你的問題,請點擊接受答案。 :) – dodexahedron

+0

顯然有一個10分鐘的按鈕延遲,你回答很快;) – Treelink

1

那是因爲您每次打電話PlayPause時都會創建一個新的媒體播放器。在構造函數中創建它,它應該沒問題。