动态加载资源文件

时间:2013-12-18 16:26:44

标签: c# wpf resources

我想动态加载资源文件。

如果我静态地做,它显然效果很好:

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);

我怎样才能克服这个?

3 个答案:

答案 0 :(得分:4)

您可以使用ResourceManager按名称加载资源

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

然后你需要把它作为一个流投射..

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

答案 1 :(得分:2)

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

获取资源值
var soundURL=Properties.Resources.ResourceManager.GetString("_" + num);

答案 2 :(得分:1)

这样做:

    string file = "_" + num;

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