动态加载资源文件

7
我希望能够动态加载资源文件。
如果我静态地加载资源文件,那显然可以正常工作:
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个回答

6
您可以使用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();
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接