2009-07-27 15 views
14

Mam grupę obrazów w moich My.Resources. Chcę wybrać obrazy wybrane do dynamicznego wyświetlania w czasie wykonywania. Jak mam to zrobic?VB.Net: Dynamicznie wybierz obraz z My.Resources

'Static (Compile time) Assignment 
UltraPictureBox1.Image = my.Resources.zoo_picture_1 

'Dynamic (Runtime) Assignment 
UltraPictureBox1.Image = ??? 

Odpowiedz

28

Znaleziono rozwiązanie:

UltraPictureBox1.Image = _ 
    My.Resources.ResourceManager.GetObject(object_name_as_string) 
+2

Och, ludzie mogliby zrobić ten sam kod działa w obu sytuacjach! Mam na myśli, .NET jest pełen takich rzeczy jak "nie mów, że to" forma1 ", zamiast tego nazwij to" ja ". Mogliby po prostu dokonać automatycznej korekty lub nawet lepiej, skompilować kod w ten sam sposób./rant –

+0

P.S .: To nie działa dla mnie (VB 2008) –

+1

P.S .: Aktualizacja: przepraszam; działa, ale nie zawierają rozszerzenia! –

4

Upewnij się, że nie obejmują rozszerzenie zasobu, ani do niego ścieżkę. To tylko nazwa pliku zasobów.

PictureBoxName.Image = My.Resources.ResourceManager.GetObject("object_name") 
+0

Jaka byłaby różnica między File.jpg i File.pdf, jeśli mam te zasoby (ta sama nazwa pliku, inne rozszerzenie)? –

4

To działa na mnie w czasie wykonywania zbyt:

UltraPictureBox1.Image = My.Resources.MyPicture 

nie wymaga użycia strun i jeśli zmienię nazwę jest ona automatycznie aktualizowana przez refactoring.

2
Dim resources As Object = My.Resources.ResourceManager 
PictureBoxName.Image = resources.GetObject("Company_Logo")