textBox.Text w pętli for

0

Witam po kliknieciu w odpowiedni label chcę aby jego tekst przechodzil do textBox.Text

chcąc uniknąć tego kodu

if (textBox1.Text == string.Empty)
            {
                textBox1.Text = label1.Text;
            }
            else if (textBox2.Text == string.Empty)
            {
                textBox2.Text = label1.Text;
            }

i tak około 100 pozycji... więc chciałbym to po prostu zapętlić

for(int i=1; i<100; i++)
{
       textBox(i).Text = label1.Text;
       textBox +i +Text = label1.Text;
}

<u>**Stąd pytanie czy da się w ogolę tak zrobić ??**</u>

Wykonałem tak:
foreach (Control ctrl in panel1.Controls)
            {
                if (ctrl is TextBox)
                {
                    if (ctrl.Text == string.Empty)
                    {
                        ctrl.Text = label1.Text;
                        break;
                    }
                }
            }

Wszystko by się wydawało pięknie ładnie ale po kliknieciu label.Text jest przekazywany do "losowych" Textboksów.
Zamiast label wpadac do textBox1 pozniej textBox2, textBox3 itp

To wpada textBox1 pozniej textBox11, textBox8 itp


Więc prócz tego pytania wyżej, chciałbym się ewentualnie zapytać czy opcję z foreach dałoby się zmienić tak aby wykonywał pętlę chociaż zgodnie z literami alfabetu ?
1

kontrolki dostajesz w takiej kolejności jak były dodawane do panelu. możesz zrobić tak

for (int i = 0; i < 100; i++)
{
  var textBox = (TextBox)panel1.Controls.Find('textBox' + i.ToString(), false).FirstOrDefault();
  if (textBox != null)
  {
    textBox.Text = 'coś coś';
    break;
  }
}
0

Ja bym takie Find zrobił raz przy inicjalizacji i wsadził wszystkie textboxy do List<TextBox> albo do tablicy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1