Kezdőoldal » Számítástechnika » Programozás » Mi a következő C#-os probléma...

Mi a következő C#-os probléma megoldása (magasszíntű kérdés)?

Figyelt kérdés

Képet akarok berakni picturebox-ba a következő módon

pic1_1.Image = MachinePoker.Properties.Resources.kep6;


Ez működik is ugye (mert resourcesbe már benne van aminek benne kell lennie) de dinamikussá akarom tenni úgy, hogy két különböző string együttese adja meg a kép nevét valahogy így;

string s1 = "kep";

string s2 = "6";

pic1_1.Image = MachinePoker.Properties.Resources.s1+s2;


Ez a megoldás persze nem működik, de ha valakinek van valami ötlete azt nagyon megköszönném.


2011. okt. 1. 16:27
 1/7 anonim ***** válasza:

Elore is bocs a helyesirasi hibakert telorol vok.

pic1_1.Image = MachinePoker.Properties.Resources.(s1+s2);


Probalgatni kellene bar sztem az a legegyszerubb modszer ha a programban osszes elofordulo kepet belerakod egy listaba majd azzal peldanyositod az objektumkkat

2011. okt. 1. 16:36
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:
ez se jó "Identifier expected"-et dob rá. Ha nincs jobb megoldás (ami azért jó lenne) akkor marad a másik megoldásod. Köszönöm szépen.
2011. okt. 1. 16:42
 3/7 anonim ***** válasza:

A legnagyobb gond itt az, hogy fogalmad nincs róla, hogy mit csinálsz.

A kep6 az a Resources nevü osztályodnak egy statikus property-je, amit az IDE automatikusan létrehoz neked, amikor hozzáadsz egy új objektumot a resources-hoz.

Property-kre az azonositójukkal kell hivatkozni a program szövegében, máshogy nem lehet(illetve ez nem teljesen igaz, de a Reflection-be ne menjünk bele, régen rossz, ha már ahhoz kell folyamodni)

Identifier expected az meg azt jelenti, hogy ha megadod egy osztály azonositóját, és utána teszel egy pontot, akkor azt egy, az osztályban definiált publikus azonositónak kell követnie. Legalább a nyelv szabályaival legyél(legyetek) tisztában, és akkor nem próbálkoztok ilyen hülyeségekkel.

A megoldás pedig a Resources.ResourceManager.GetObject() nevü függvénye, aminek egy string tipusú azonositót adhatsz át, és visszaadja az azonositóhoz tartozó object-et, amit még utána cast-olnod kell Image tipusra, hogy oda tudd adni a PictureBox-nak.

Tehát valahogy igy néz ki :

pic1_1.Image = (Image)MachinePoker.Properties.Resources.ResourceManager.GetObject(s1+s2);

2011. okt. 1. 18:03
Hasznos számodra ez a válasz?
 4/7 _Jessy_ ***** válasza:

18:03 jó megoldás, de ha mindenképpen a proprty-jét akarod egy osztálynak meghíni ilyen módon, akkor azt a typeof(osztály).InvokeMember(...) -el teheted meg

[link]

2011. okt. 1. 20:58
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

20:58 :

Igen, ezt a technológiát hivják reflection-nek.

Amit ha meglátok review alatt valakinek a kódjában, abban a pillanatban bukott is, irhatja át az egészet, mert felrúg minden objektum-orientáltsági és tervezési alapelvet.

Ha valaki a saját maga által irt osztályokat reflection-el kell b-zerálja, akkor ott valamit nagyon sz*rul tervezett meg. A .NET framework library-je meg azért eléggé átgondoltan össze van rakva ahhoz, hogy ne kelljen benne reflection-nel matatni.

Ilyesmiknek a használata nagyon ritkán lehet indokolt.

Amit én el tudok képzelni:

1. Plugin alapú alkalmazásoknál, ahol dll-ként lehet megirni egy plugin-t, és az app-ot meg valamilyen konfiggal beállitani, hogy melyik dll-eket töltse be.

2. Vagy esetleg olyan platformon kell alkalmazást fejleszteni, amin bizonyos dolgok csak reflection-el oldhatók meg, a platform kódja viszont nem módositható, és maga a platform sem lecserélhető.

3. Unit-teszt környezet készitésénél/teszt-automatizálásnál

2011. okt. 1. 21:44
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
Köszi szépen, sokat segítettél, és tanulságos is volt!
2011. okt. 1. 21:54
 7/7 anonim ***** válasza:

Ez aztán a magas szintű kérdés...

Ez még nagyon az alap alatt van, egy perc google és egy kis logika...

2013. jan. 10. 11:25
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!