Hogyan lehet c#-ban egy változót komponens nevekre való hivatkozásra használni?
eddig switch-et használtam, ahol felsoroltam, az összes a változónak adható nevet, és utána a hozzá tartozó parancsot. példa:
switch (combox_komplista.Text)
{
case "label1":
{ label1.Top = Convert.ToInt32(numX.Value); }
break;
case "label2":
{ label2.Top = Convert.ToInt32(numX.Value); }
break;
case "label3":
{ label3.Top = Convert.ToInt32(numX.Value); }
break;
case "label4":
{ label4.Top = Convert.ToInt32(numX.Value); }
break;
case "label5":
{ label5.Top = Convert.ToInt32(numX.Value); }
break;
ezzel az a baj, hogy nagyon sokáig tart, főleg ha több dologra, vagy több komponenssel akarom használni. valami olyasmit keresek, hogy bele tudom tölteni a változó értékébe a komponens nevét, majd azt úgy használni mintha nem a változó lenne a kódban, hanem az értékébe betöltött komponens neve. példa:
valtozo = button1.Name;
valtozo.Top = 12;
ilyenkor a komponensem (a gomb) vertikális helye változzon meg.
Így nem fog menni, de ha mondjuk valamilyen gyűjteményben vannak pl a gombok, akkor egy foreach segítségével végig tudsz menni rajta, és tudod ellenőrizni, hogy ugyanaz-e a név.
Valami olyasmi, hogy:
foreach (Button b in buttons)
{
__if (b.Name == selectedName)
__{
____b.Text = givenValue;
__}
}
Jobb megoldás:
Dictionary<string, Label> labels = new Dictionary<string, Label>() {
{"label1", label1},
/*...*/
);
labels[combobox_komplista.Text].Top = Convert.ToInt32(numX.Value);
Rosszabb megoldás:
reflection használata
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!