Diskusní fóra - Téma

Otázka - nezodpovězená Téma: Změna hodnot v textboxu

RSS Feed RSS Feed

Diskusní fóra > Visual Basic .NET (2005, 2008, 2010) > Změna hodnot v textboxu

Změna hodnot v textboxu

Datum: 30.8.2010 19:31
Autor: Jan Taufer
Hodnocení autora: 3
Příspěvků: 17
Dobrý den,
narazil jsem na drobný problém. Mám program s více formuláři, v nichž zadávám vstupní hodnoty do textboxů. Po stisknutí tlačítka OK dojde k načtění hodnot z textboxů do paměti a uzavření okna. Pak mě ale napdla taková věc...Co když uživatel přepíše hodnotu v textboxu a okno prostě zavře. Hodnota v textboxu zůstane, ale v paměti není, což může vést ke špatným výsledkům. Napadlo mě při otevření okna ukládat původní hodnoty do pomocných proměnných nebo ješt lépe do tagů textboxů, ale zdá se mi to takové kostrbaté. Nevíte někdo o elegantnějším řešení?
A druhý dotaz...jaká je drobná niance mezi událostni form activated a form shown, popř. form load? Nejsem si jistý zda je používám zcela správně.

Děkuji za případné reakce
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 30.8.2010 20:39
Autor: Ondřej Linhart
Hodnocení autora: 1132
Příspěvků: 2389
Pokud se budou hodnoty ukládat v té části kódu, která okno zobrazuje a okno je modální, pak k této situaci nikdy nedojde. V případě, že okno je nemodální, tak stačí ukládání hodnot pověsit na událost FormClosing a také k tomu nedojde.

Load - nastane jednou po inicializaci formuláře.

Activated - nastává vždy, když je formulář aktivován uživatelem nebo kódem.

Shown - nastane vždy po prvním zobrazení formuláře (např. když je schován pomocí Visible = False a následně zobrazen pomocí Visible = True).
 
           [Odpovědět]
 
Hodnocení: 1 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 30.8.2010 21:02
Autor: Jan Taufer
Hodnocení autora: 3
Příspěvků: 17
Děkuji za odpověď. Neporozumněl jsem první části "pokud se budou hodnoty ukládat v té části kódu, která okno zobrazuje a okno je modální, pak k této situaci nikdy nedojde." Používám modální okna a jak jsem si zkusil v nemodálním okně tam ta hodnota opravdu nezůstane. Nicméně nechápu proč tomu tak je.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 30.8.2010 21:16
Autor: Ondřej Linhart
Hodnocení autora: 1132
Příspěvků: 2389
Příklad zobrazení modálního formuláře a náznak kam umístit příslušný kód. Níže uvedený kód je umístěn v hlavním okně aplikace a toto je tedy část kódu, která okno zobrazuje.

Using window As New SettingsForm
  window.ShowDialog(Me)
  'Zde umístit kód pro načtení/uložení hodnot
End Using
 
Že hodnoty nezůstanou v uzavřeném okně je naprosto jasné, protože v momentě, kdy se okno uzavře začne probíhat garbage kolekce, tedy uvolňování všeho, co instance třídy formuláře v paměti obsahuje.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 31.8.2010 7:03
Autor: neregistrovaný (193.165.154.218)
Hodnocení autora: není
Příspěvků: 0
Proč nedeklarovat globální proměnnou do které by mohl uložit hodnotu z jakéhokoliv formuláře programu ?

http://www.vbnet.cz/forum-tema--2248-pro...
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 31.8.2010 9:38
Autor: Tomáš Herceg
Hodnocení autora: 1660
Příspěvků: 3533
Globální proměnné jako začátečník nikdy nepoužívejte.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 31.8.2010 15:38
Autor: neregistrovaný (193.165.154.218)
Hodnocení autora: není
Příspěvků: 0
a próóóóóč?
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 31.8.2010 16:03
Autor: Tomáš Herceg
Hodnocení autora: 1660
Příspěvků: 3533
Protože pak na tu proměnnou budete sahat z padesáti různých míst a v případě, že někde uděláte chybu, ji budete jen velmi obtížně hledat.
Proměnné by měly mít vždy co nejmenší možný scope (ideálně deklarované v metodě nebo jen v bloku, kde se používají, např. uvnitniř For cyklu nebo ifu, pokud nejsou potřeba vně). Pokud už proměnná musí být sdílená z více míst, udělejte ji privátní a deklarujte uvnitř třídy.
 
           [Odpovědět]
 
Hodnocení: 1 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 31.8.2010 15:40
Autor: Ondřej Linhart
Hodnocení autora: 1132
Příspěvků: 2389
Protože deklarovat (navíc v tomto případě zcela zbytečně) globální proměnnou je prasárna, která je v rozporu se zásadami OOP.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 31.8.2010 16:01
Autor: Jan Taufer
Hodnocení autora: 3
Příspěvků: 17
No já to globálními proměnnými řeším. V programu je kolem patnácti formulářů a proměnné jsou potřeba na různých místech programu a to až do konce, kdy se provede finální výpočet.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 31.8.2010 17:15
Autor: Ondřej Linhart
Hodnocení autora: 1132
Příspěvků: 2389
No tak to řešíte tím nejhorším možným způsobem a prasácky. Objektově orientované programování a zapouzdřenost jsou pro vás naprosto cizí pojmy.
 
           [Odpovědět]
 
Hodnocení: -1 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 31.8.2010 17:57
Autor: Tomáš Herceg
Hodnocení autora: 1660
Příspěvků: 3533
Je to začátečník, takže se moc není čemu se divit.

Zkuste prostudovat poslední díly seriálu VB.NET od začátku, jsou tam popsány základy objektově orientovaného programování.
 
           [Odpovědět]
 
Hodnocení: 1 Čekejte, prosím...

Re: Změna hodnot v textboxu

Datum: 31.8.2010 21:33
Autor: Jan Taufer
Hodnocení autora: 3
Příspěvků: 17
Pravda. Jsem strojař a vytvářím si program na šroubové spoje a v programování opravdu pokulhávám. Kdbych byl programátor tak bohužel zase nerozumím do hloubky těm šroubovým spojům... takže to si nevyberete. Ale snaha je a to OOP prozkoumám. Díky za rady.
 
           [Odpovědět]
 
Hodnocení: 2 Čekejte, prosím...
 

VBNET.CZ | © 2007 Tomáš Herceg, Tomáš Jecha | Kopírování a přejímání jakéhokoliv obsahu z tohoto webu je bez písemného svolení autorů zakázáno.