VB2005.net中的资源?

时间:2009-07-13 02:52:29

标签: vb.net .net-2.0

简而言之,当计时器用完时,我的程序会播放一个随机的嵌入音频文件,有没有办法将my.resources文件称为数组并以这种方式使用它们,而不是需要知道确切的文件名。资源?

2 个答案:

答案 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的那个