简而言之,当计时器用完时,我的程序会播放一个随机的嵌入音频文件,有没有办法将my.resources文件称为数组并以这种方式使用它们,而不是需要知道确切的文件名。资源?
答案 0 :(得分:2)
我没有在Windows应用程序上尝试这个,但是我必须对Web应用程序做同样的事情,并且我使用以下代码来实现:
VB版:
' get a reference to the current assembly
Dim a = Assembly.GetExecutingAssembly()
' get a list of resource names from the manifest
Dim resNames = a.GetManifestResourceNames()
'Generate a random number
Dim randomNumber = YourRandomNumberGenerator()
'Get the file name using the randomNumber
Dim randomFileNameFromResource = resNames(randomNumber)
'Get the contents of the file:
Dim sr = New StreamReader(a.GetManifestResourceStream(randomFileNameFromResource))
Dim fileContent = sr.ReadToEnd()
C#版
// get a reference to the current assembly
var a = Assembly.GetExecutingAssembly();
// get a list of resource names from the manifest
var resNames = a.GetManifestResourceNames();
//Generate a random number
var randomNumber = YourRandomNumberGenerator();
//Get the file name using the randomNumber
var randomFileNameFromResource = resNames[randomNumber];
//Get the contents of the file:
var sr = new StreamReader(
a.GetManifestResourceStream(randomFileNameFromResource ));
var fileContent = sr.ReadToEnd();
我认为如果添加了更多的嵌入资源,数组中文件的位置会随着时间的推移而改变,但我想这对你来说无关紧要,因为你无论如何都要随机选择。
答案 1 :(得分:0)
我在vb2005中的正确答案是Reflection.Assembly.GetExecutingAssembly.GetManifestResourceNames() 还有一个get stream功能,谢谢Roberto的那个