Dynamiczne wypełnianie Textbox'ów

Odpowiedz Nowy wątek
2006-09-25 10:04
staniek
0

witam,
mam taki problem, nie potrafię dynamicznie wypełnić textbox'ow na moim formularzu.
weżmy taki przykład.
Na formularzu mam 50 textbox + 1 textbox + button
wtym jednym textbox wpisuje liczbę np: 10 i klikam w btton i powinno się wypełnić 10 pierwszych textbox'ow liczbami od 1-10.
Niestety nie potrafię tego zrobić :(
Jest to w ogóle możliwe ??

pozdr,
tedew

Pozostało 580 znaków

2006-09-25 13:44
0

Wpakuj je do tablicy i wypelniaj w forze albo cos w tym stylu. A najlepiej jakbys wszystkie te textboxy (albo odpowiednie grupy) powstawial na panel. Wtedy mozesz przejsc kolekcje Controls Panelu, zrzutowac kazda po kolei na TextBoxa (zakladajac, ze na panelu tylko textboxy) i podstawic odpowiednia wartosc.

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-09-25 14:37
staniek
0

witam,
dzięki za odp.
a nie można tego zrobić jakoś tak ??

for (int i .....
textbox[i].text="jakiś text"

??

tak by było najlepiej - tylko, to za trudne dla mnie :(

Pozostało 580 znaków

2006-09-25 14:45
0

Nie, tak nie mozna.

Przetestuj sobie cos takiego:

Stworz Panel o nazwie powiedzmy TestPanel. Na ten panel wrzuc 4 Textboxy i przycisk.

pod przycisk podepnij onClick i w zdarzeniu wpisz taki kod:

foreach(Control vControl in TestPanel.Controls)
  if(vControl is TextBox)
    ((TextBox)vControl).Text = "tekst";

Pisane z palca, wiec moga byc drobne bledy, ale powinno dzialac.

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-09-26 23:31
0

Oj Johny... mozna mozna ;)

Wyjatkowo do tego nadaje sie kontrolka FlowLayoutPanel

        private void btnWypelnij_Click(object sender, EventArgs e)
        {

            TextBox[] textBox = new TextBox[50];
            int liczDo = int.Parse(this.tbxLiczDo.Text);
            for (int i = 0; i < textBox.Length; i++)
            {
                textBox[i] = new TextBox();
                if (i + 1 <= liczDo)
                    textBox[i].Text = string.Format("{0}",(i + 1));
                this.flowLayoutPanel1.Controls.Add((Control)textBox[i]);
            }
        }

powyzsza metoda wykonywana po kliknieciu na button, ktory ma wypelniac textbox'y.
tbxLiczDo - to textbox w ktorego wpisujesz do ilu ma liczyc.
50 textbox'ow zostanie dodanych dynamicznie i odrazu wypelnionych :)

Wkoncu... enjoyment matters ;)


Senior Full Stack Developer .NET & Angular

Pozostało 580 znaków

2006-09-26 23:39
0

Nie mozna - w stosunku do textboxow stworzonych przez kreatora, jak w tym wypadku. O tablicy juz pisalem, jak zapewne widziales, ale niewygodnie jej uzywac jesli obiekty sa tworzone za pomoca 'klikologii'. Natomiast przejscie przez kolekcje to lepsze rozwiazanie - mamy rozwiazanie przechodzace przez wszystkie obiekty danego typu + mozna je tworzyc kreatorem.

Poza tym odpowiedz nie mozna byla na powyzsze pytanie, czyli czy mozna sie odwolac w jakis sposob do indeksow obiektow utworzonych w taki sposob - a nie mozna.

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-09-26 23:49
0
List<TextBox> textbox = new List<TextBox>();
for (int i = 0; i < this.Controls.Count; i++)
{
    if (this.Controls[i] is TextBox)
        textbox.Add((TextBox)this.Controls[i]);
}

;)


Senior Full Stack Developer .NET & Angular

Pozostało 580 znaków

2006-09-27 00:00
0

To juz lepiej zrobic tak jak ja pisalem... Po co kopiowac liste/kolekcje, skoro juz jest?

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-09-27 00:04
0

no bo autor chciał "zrobić to jakoś tak" :P

Z drugiej strony 'lepiej' w ogole nie przeciagac tych 50 textbox'ow na forme ;)


Senior Full Stack Developer .NET & Angular

Pozostało 580 znaków

2006-09-27 00:07
0
wasiu napisał(a)

no bo autor chciał "zrobić to jakoś tak" :P

Z drugiej strony 'lepiej' w ogole nie przeciagac tych 50 textbox'ow na forme ;)

No jak to ma byc 50, czy 100, to nie. Ale jak mam sobie stworzyc 4 panele z paroma textboxami, czy czyms tam i nie chce pozniej pamietac o obsludze tego, to lepiej machnac taka metode raz a skutecznie. Kazdy nowo wstawiony wezmie pod uwage. Szczegolnie przydaje sie np. przy sprawdzaniu formularza (czy niepuste pola) itd. No i w przypadku np. formularza latwiej jest ustawiac takie pola recznie, a nie wklepujac wspolrzedne w kodzie.

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-12 20:36
rookie
0

odświeżę temat - chciałbym wykorzystać ten kod private void btnWypelnij_Click(object sender, EventArgs e)
{

                    TextBox[] textBox = new TextBox[50];
                    int liczDo = int.Parse(this.tbxLiczDo.Text);
                    for (int i = 0; i < textBox.Length; i++)
                    {
                            textBox[i] = new TextBox();
                            if (i + 1 <= liczDo)
                                    textBox[i].Text = string.Format("{0}",(i + 1));
                            this.flowLayoutPanel1.Controls.Add((Control)textBox[i]);
                    }
            }


do swoich celów z tym że ilość textBoxów ma być zmienna, oraz chciałbym ustalić ich wygląd (wielkość, kolor czcionki itp)

Ogolnie to musze zaprezentować na formie wyniki obliczeń których ilość moze się wahać od 0 do 60.
Zastanawiałem sie nad użyciem innej kontrolki zamiast texboxów ale z nimi chyba bedzie najłatwiej :)

Jakieś propozycje ?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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