2013-12-18 120 views
4

我想动态加载资源文件。动态加载资源文件

如果我做静态的,它显然行之有效:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(Properties.Resources._88); 
player.Play(); 

此加载并播放资源_88。

不过,我想这是动态的,

我有一个变量“NUM”这可以从1-90的任意数字,我想要加载与该号码资源。

所以我创建了一个名为“soundURL”另一个变量,它看起来像:

var soundURL = "_" + num; 

但是当我使用的是与以前的它显然不工作:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(Properties.Resources.soundURL); 

我如何克服这个问题?

回答

4

您可以使用ResourceManager通过名称

object O = Properties.Resources.ResourceManager.GetObject("_88"); 

加载资源,那么你只需要转换其获取资源价值作为流..

var s = (Stream)O; 
System.Media.SoundPlayer player = new System.Media.SoundPlayer(s); 
player.Play(); 
2

如果这是一个RESX资源文件,您可以使用ResourceManager的

var soundURL=Properties.Resources.ResourceManager.GetString("_" + num); 
1

这将做到:

string file = "_" + num; 

    SoundPlayer sp; 
    Stream s = Properties.Resources.ResourceManager.GetStream(file); 
    if (s != null) 
    { 
     sp = new System.Media.SoundPlayer(s); 
     sp.Play(); 
    }