Nasobení nových textboxů – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nasobení nových textboxů – .NET – Fórum – Programujte.comNasobení nových textboxů – .NET – Fórum – Programujte.com

 

urbajsz
~ Anonymní uživatel
5 příspěvků
12. 2. 2009   #1
-
0
-

Zdravím,

představte si program kde jsou dva textboxy vedle sebe, jeden určuje cenu a druhý počet kusů. Pomocí buttonu se dá vytvořit nový řádek kde budou zas dva textboxy (TextBox cena = new TextBox (), TextBox ks = new TextBox()) . Chci se zeptat zda je možné a jak násobit mezi sebou jednotlivé řádky (tzn. cena*počet kusů). Umím nalézt třeba max. cenu nebo max. počet kusů pomocí pole, ale nevím zda si C# uvědomuje pořadí jednotlivých textboxů. Nepotřebuji to pro nekonečnou řadu a tak mě napadlo, že bych si třeba ty textBoxy už připravil a nějak je zakryl a po zmáčknutí buttonu by se vždy jeden řádek od kryl.

Předem dík za radu.

Nahlásit jako SPAM
IP: 62.4.113.–
Pebble0
Návštěvník
12. 2. 2009   #2
-
0
-

Teoreticky by se to dalo řešit následovně :
Existuje kolekce prvků formuláře, pokud si textboxy, které přidáváš na formulář rozumně pojmenuješ (např. Textbox pro cenu jako txtCena1), dá se k nim pak přistupovat jako k prvkům této kolekce a funkcí Parse, popř. TryParse třídy Int, nebo jiné třídy (pokud chceš i desetinná čísla), kde předáš jako argument textbot.Text to narvat do proměnný a vynásobit, popř. pak zobrazit výsledek v jiném Controlu.
Něco podobného jsem už řešil, ale nejsem doma, jinak bych ti sem hodil i ukázku.

Nahlásit jako SPAM
IP: 83.208.77.–
urbajsz
~ Anonymní uživatel
5 příspěvků
12. 2. 2009   #3
-
0
-

kdyžtak pošli, takhle tomu moc nerozumim. Já jsem to zkusil bláhově napsat Textbox[x].Text, kde x značí počet kliknutí na button, ale to by bylo pro C# moc snadné :smile1:

Nahlásit jako SPAM
IP: 62.4.113.–
Pebble0
Návštěvník
12. 2. 2009   #4
-
0
-

To urbajsz : Eště, jak se dostanou ty údaje o ceně a množství do těch textboxů - udělaj se prázdný a zadá je pak uživatel, nebo už ty čísla sou známý při vytvoření těch textboxů a jenom se přiřadí jejich textu?

Nahlásit jako SPAM
IP: 83.208.77.–
urbajsz
~ Anonymní uživatel
5 příspěvků
12. 2. 2009   #5
-
0
-

To Pebble : zadá si je uživatel

Nahlásit jako SPAM
IP: 77.48.50.–
Pebble0
Návštěvník
12. 2. 2009   #6
-
0
-

takže t akolekce Controls na formuláři je obsažená v this.Controls, k jednotlivým položkám kolekce se přistupuje stejně jako v jiné kolekci pomocí indexu, např. this.Controls[1], nebo pomocí jeho jména, např. this.Controls["cena3"]. Pokud znáš jméno textboxu, což bys měl, protože ho zadáváš při vytvoření, je jednoduché vytáhnout do proměnný číslo v jeho Textu. Nevim přesně, jak funguje program a kam se vypisujou výsledky, popř. jestli je možné mít dohromady textboxy prázdné i vyplněné dohromady, pokud ano, pak se dá pro každej Control zjistit hodnota a vypočítat pouze ty, který sou vyplněný : např.
foreach (Textbox políčko in this.Controls) //projde všechny Textboxy na formuláři
{
if (podmínka pro vyplnění, např. políčko.Text.Length>0, popř. v kombinaci s názvem)
{
tady funkce, co např. zjistí jméno políčka a přiřadí správnej Textbox s počtem k ceně
vypočítá se součin a zobrazí se někde
}
}
je potřeba samozřejmě ošetřit případy, kdy je vyplněná cena a není počet apod.
Na bližší podrobnosti bych potřeboval bližší popis toho, co to má dělat a jak to má dělat, ale snad to pro inspiraci bude stačit takhle.

Nahlásit jako SPAM
IP: 83.208.77.–
Pebble0
Návštěvník
12. 2. 2009   #7
-
0
-

Teď mě dodatečně napadlo že bude možná potřeba to postavit takhle :
foreach (Control políčko in this.Controls)
{
if (políčko is Textbox)
{
tady to pokračování
}
}

Nevim, jestli by to předešlý fungovalo, nemůžu to teď odzkoušet.

Nahlásit jako SPAM
IP: 83.208.77.–
urbajsz
~ Anonymní uživatel
5 příspěvků
16. 2. 2009   #8
-
0
-

To Pebble : díky za radu, ale zatím se s tím stále peru, nedokážu napsat tu vnitřní funkci :smile1:

Nahlásit jako SPAM
IP: 62.4.113.–
Pebble0
Návštěvník
16. 2. 2009   #9
-
0
-

Jenom bych potřeboval vědět, jak to funguje (moje představa : na formuláři sou 2 textboxy a tlačítko, uživatel vyplní čísla v textboxech pro cenu a počet a zmáčkne tlačítko, vypočte se to a výsledek se někam zobrazí - asi na label, a zobrazí se další dva textboxy, které jsou prázdné a připravené pro zadání, uživatel vyplní a stiskne zase tlačítko atd., ale možná, že si uživatel může naklikat prázdnejch textboxů 10 a pak je editovat a výsledky zobrazovat při opuštění textboxu počet).

Nahlásit jako SPAM
IP: 83.208.77.–
Pebble0
Návštěvník
16. 2. 2009   #10
-
0
-

pokud to bude první možnost :
předpoklad : jména textboxů : Cena0,Cena1,Cena2..., Počet0,Počet1,Počet2..., proměnná int, která se zvyšuje s klikem
Funkce na button1.click() :
private void button1_Click(object sender, EventArgs e)
{
string cena = "Cena" + i.ToString();
string počet = "Počet" + i.ToString();
int výsledek = Int16.Parse(this.Controls[cena].Text) * Int16.Parse(this.Controls[počet].Text);
this.label1.Text = výsledek.ToString();
i++;
//tady udělat nebo zviditelnit nový textboxy se jmény o jedno číslo vyšší
}

nemám možnost to momentálně odzkoušet, a nikdy jsem nepotřeboval vytvářet komponenty za běhu aplikace, takže nevim, jak to bude fungovat (pokud budou předpřipravený a bude se nastavovat jenom visible na true, tak by to fungovat mělo), dneska se ke kompu už nedostanu, ale mrku eště na to, zatim to ber spíš jako inspiraci k dalším průzkumům.

Nahlásit jako SPAM
IP: 83.208.77.–
rudolf_franek0
Stálý člen
19. 2. 2009   #11
-
0
-

Mozna nezapadnu do diskuze, ale prijde mi ve vysledku jednodussi pouzit DataGridView (nebo nejaky hezci grid) a do nej pridavat radky. Eventuelne by mohl mit tri sloupecky - tedy i pro vysledek.
Je nejaky duvod proc by dynamicke pridavani TextBox-u bylo lepsi ?

Nahlásit jako SPAM
IP: 90.178.66.–
Pebble0
Návštěvník
20. 2. 2009   #12
-
0
-

To rudolf_franek : Souhlas, taky mě nenapadá, proč tohle všechno, dá se to řešit pohodlněji jinak, ale proti gustu... :)

Nahlásit jako SPAM
IP: 83.208.77.–
urbajsz
~ Anonymní uživatel
5 příspěvků
23. 2. 2009   #13
-
0
-

já se snažil to udělat trochu jinak, ale ve finále jsem se rozhodl netrápit se s tím a prostě jsem to udělal díky visible true :smile1: . Budu tam mít spoustu jiných problémů, takže tohle udělám jednoduše. Teď mě čeká vytvoření databáze a celkovej výstup chci mít v excelu. Ten excel mi už běhá jen budu muset pořešit jak formátovat buňky (tučná písmena, rozšířit sloupec, atd.).

Díky za rady, já jdu dál válčit.

Nahlásit jako SPAM
IP: 62.4.113.–
mephi0
Expert
25. 2. 2009   #14
-
0
-

nestačil by ListBox ako zoznam a textbox pre editovanie a vkladanie noveho ?

Nahlásit jako SPAM
IP: 85.237.232.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Pebble0
Návštěvník
25. 2. 2009   #15
-
0
-

To urbajsz : No, pokud budeš mít výsledky a počty a ceny v tabulce, pak je o důvod víc použít právě DataGridView, budeš to mít mnohem jednodušší s obsluhou (i když dostat se ze začátku do problematiky je děsnej vopruz :)

Nahlásit jako SPAM
IP: 83.208.77.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

C# vytváření nových labelů — založil Tomas491

Instalace nových komponent — založil Majlow

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý