2009-07-13 13 views
1

Kurz gesagt spielt mein Programm eine zufällige eingebettete Audiodatei ab, wenn ein Timer abgelaufen ist, gibt es eine Möglichkeit, die my.resources-Dateien als ein Array zu bezeichnen und sie auf diese Weise zu verwenden, anstatt den genauen Dateinamen der Ressource zu kennen ?Ressourcen in VB2005.net?

+0

ist dies eine Web-Anwendung oder eine Windows-Anwendung? – 7wp

+0

Windows App, im Grunde ein Eggtimer mit einem Bildschirmschoner und Sound – Jim

Antwort

2

Ich habe dies auf einer Windows-Anwendung nicht versucht, aber ich hatte das gleiche für eine Web-Anwendung zu tun, und ich verwenden, um den folgenden Code um das zu erreichen:

VB Version:

' 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# Version

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

ich die Position der Datei in dem Array im Laufe der Zeit, wenn mehr eingebettete Ressourcen hinzugefügt bekommen denken würde, obwohl würde sich ändern, aber ich denke, es würde keine Rolle spielen für Sie, da Sie sowieso einen zufälligen auswählen.

+0

Assembly, scheint nicht direkt in vb2005 existieren, aber ich fand es ich denke My.Application.Info.LoadedAssemblies (0) .GetFiles dort, so dass Sie waren t zu weit entfernt – Jim

+0

Ah OK danke, ich benutzte es auf .NET Framework v3.5 – 7wp

0

die richtige Antwort für mich in VB2005 ist Reflection.Assembly.GetExecutingAssembly.GetManifestResourceNames() Theres auch eine Funktion get Strom dort, danke Roberto für die

Verwandte Themen