Malo su nejasno postavljeni uslovi. Ne znam šta od ovog napisanog može, a šta ne može da se menja. Ne znam šta je poenta ovog zadatka, šta tačno želiš da postigneš, ili šta tačno neko drugi očekuje od tebe. Ne znam ni odakle ova promenljiva args, ni kako je ona povezana sa dva text boxa.
Ako prosto samo želiš da menjaš boje u tri kvadrata, a nije uopšte bitno kako ćeš to da uradiš onda ti nikakav Dictionary ni ne treba. Imaš dva TextBox-a, recimo da se zovu textBoxName i textBoxLight. Imaš tri labele koje treba bojiti, recimo da se zovu labelFirst, labelSecond, labelThird. U hendleru za klik na OK dugme treba ti kod nalik ovome:
Code:
System.Windows.Forms.Label target;
if (textBoxName.Text == "prva")
target = labelFirst;
else if (textBoxName.Text == "druga")
target = labelSecond;
else if (textBoxName.Text == "treca")
target = labelThird;
System.Drawing.Color color;
if (textBoxLight.Text == "Red")
color = Color.Red;
else if (textBoxLight.Text == "Yellow")
color = Color.Yellow;
else if (textBoxLight.Text == "Green")
color = Color.Green;
target.BackColor = color;
I to je to. Ali, ako baš potrebno da se koristi Dictionary onda umesto ovih if-else-if kobasica možeš da imaš dva rečnika koja se jednom inicijalizuju i više ne diraju. Jedan koji mapira string u Label, i drugi koji mapira string u Color, i onda bi u hendleru stajala samo jedna linija:
Code:
Targets[textBoxName.Text].BackColor = Colors[textBoxLight.Text];
Ili nešto slično. Ali, ako baš potrebno da se koristi Dictionary kojem će tokom rada da se menjaju podaci, može i to ali to je glupo, i to mi miriše da školske zadatke.