2013-12-18 5 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(); 
    } 
Смежные вопросы