[ Marko Medojević @ 07.06.2008. 18:57 ] @
Ćao!

Početnik sam u C# i zanima me jedna stvar! Imam jednu formu (Form1) tri labela (label1, label2 i label3) tekst box (textBox1) i dugme (button1):



Program radi sledeću svar, kada unesem u txrBox1 broj 1 i pritisnem dugme izbacimi na label1 string "POZZ", kada unesem u txrBox1 broj 2 i pritisnem dugme izbacimi na label2 string "POZZ" i kada unesem u txrBox1 broj 3 i pritisnem dugme izbacimi na label3 string "POZZ".
Znači za ovo imamo sledeći kod:
Code:

private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "";
            label2.Text = "";
            label3.Text = "";
            int tmp = Convert.ToInt32(textBox1.Text);

            switch (tmp)
            {
                case 1:
                    label1.Text = "POZZ";
                    break;
                case 2:
                    label2.Text = "POZZ";
                    break;
                case 3:
                    label3.Text = "POZZ";
                    break;
            }
        }


E sad mislim da se primer može uprostiti na sledeći način:
Code:

private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "";
            label2.Text = "";
            label3.Text = "";
            int tmp = Convert.ToInt32(textBox1.Text);


            string lbl = label1 + textBox1.Text;
            lbl.Text = "POZZ";

        }

ili kreiranjem niza labelova pa da bude:
Code:
label[tmp].Text = "POZZ";

Ja ne znam da izvedem ni jedno ni drugo pa ako bi neko mogao da me uputi na neki link ili da mi ukratko objasni kako da rešim ovakve probleme.

Unapred hvala!
[ Marko Medojević @ 07.06.2008. 19:27 ] @
Rešio sam problem na sledeći način:
Code:
private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "";
            label2.Text = "";
            label3.Text = "";
            label4.Text = "";
            int tmp = Convert.ToInt32(textBox1.Text);

            

            findMyLabel(tmp).Text = "POZZ";

        }

        private Label findMyLabel(int pnIndex)
        {
            Label loTheLabel = null;

            foreach (object loObj in this.Controls)
            {
                if (loObj is Label)
                {
                    if (((Label)loObj).Name == String.Format("label{0}", pnIndex))
                    {
                        loTheLabel = (Label)loObj;
                        break;
                    }
                }
            }

            return loTheLabel;
        }


Kao što vidite napravio sam funkciju koja prima index i vraća label koji se završava sa tim indeksom ako je format labela "labelXX" gde je XX broj. Naravno ako neko ima još neko bolje rešenje nek javi.
[ mmix @ 07.06.2008. 21:17 ] @
Ako su ti sve labele direktno na formi (nisu u nekim panelima i slicno) onda mozes jednostavno ovako:

Code:

        private Label findMyLabel(int pnIndex)
        {
            return this.Controls[String.Format("label{0}", pnIndex)]
        }


ovo naravno podrazumeva da labelX postoji, inace ces dobiti exception.
[ Marko Medojević @ 07.06.2008. 21:45 ] @
Još lakše!
Hvala!
[ Marko Medojević @ 26.06.2008. 08:46 ] @
Ovo sa label-ima radi (i moja i mmix-ova funkcija) ali sad imam sličan problem sa slikama iz resursa.
Dodao sam slike u projekat i one se nalaze u Test.Properties.Resources. Imena slika su 1_1.png, 1_2.png, 1_3.png ... 3_1.png ... 4_1.png, 4_2.png. Hoću u zavisnosti od brojeva x i y da mi se pojavi određena slika na pictureBox1, recimo ako je x = 3 i y = 4 treba da se pojavi 3_4.png. Kako bi to mogao da izvedem? Da li je bolje da koristim ImageBox? Samo da napomenem da mi je bitno da nazivi slika budu u x_y.png formatu.

[ MaxaS @ 03.07.2008. 01:06 ] @
if (x == 1 && y == 2)
{
pictureBox1.Image = global::Test.Properties.Resources.1_2;
}
...................
...................

Mislim da si ovo trazio, ako nisi, onda sam pogresno razumeo pitanje.
[ Marko Medojević @ 03.07.2008. 06:19 ] @
Hvala!
Našao sam najelegantnije rešenje a to je:
Code:
pictureBox1.Image = (Image)test.Properties.Resources.ResourceManager.GetObject(x + "_" + y + ".png");