2016-10-07 46 views
0

我嘗試在我的WPF應用程序中播放聲音時遇到問題。當我從它的實際文件位置引用聲音時,像這樣,如何播放已導入到C#WPF項目中的聲音?

private void playSound() 
    { 
     //location on the C: drive 
     SoundPlayer myNewSound = new SoundPlayer(@"C:\Users\...\sound.wav"); 
     myNewSound.Load(); 
     myNewSound.Play(); 
    } 

它工作正常。不過,我最近將相同的聲音導入到了我的項目中,並且當我嘗試這樣做時,它會產生錯誤並且聲音不會播放。如何播放導入到我的項目中的聲音文件?

+0

什麼是錯誤:

可以再用看了嗎?你可以將它作爲編輯添加到帖子嗎? – astidham2003

+0

你是什麼意思進口?你做了什麼? – AnjumSKhan

+0

彈出的錯誤是:「在System.dll中發生System.NotSupportedException類型的未處理異常」 – rjkiv

回答

0

您正在使用pack Uri作爲參數,但它需要一個Streamfilepath

由於您已將文件添加到項目中,因此請更改其文件Build Action to ContentCopy To Output Directory to Always

using (FileStream stream = File.Open(@"bird.wav", FileMode.Open)) 
    { 
     SoundPlayer myNewSound = new SoundPlayer(stream); 
     myNewSound.Load(); 
     myNewSound.Play(); 
    } 
+0

這對我有用,但應該注意的是,我必須首先添加'using System.IO'。除此之外,謝謝! – rjkiv

0

你可以用反射來做到這一點。

將文件的屬性構建動作設置爲嵌入式資源

var assembly = Assembly.GetExcetutingAssembly(); 
string name = "Namespace.Sound.wav"; 
using (Stream stream = assembly.GetManifestResourceStream(name)) 
{ 
    SoundPlayer myNewSound = new SoundPlayer(stream); 
    myNewSound.Load(); 
    myNewSound.Play(); 
}