Dynamiczne wypełnianie Textbox'ów

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

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

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 :(

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

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 Od razu wypelnionych :)

Wkoncu... enjoyment matters ;)

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

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]);
}

;)

0

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

pozdrawiam
johny

0

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

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

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

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 ?
0

już nie aktualne, bo zrobiłem. Mam jeszcze jedno pytanko - czy można ustawić ramke groupbox'a na czarny kolor ? Bo nie moge tego znaleźć.

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