problém TextBox.TextChanged   otázka

VB.NET, WinForms

Napsal jsem u několika textboxů metody TextBox.TextChanged. Problém je, že se kód v nich provede i při načtení formuláře, což nechci. Nevíte kde by mohl být problém???

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V tom, že v události Load nebo v konstruktoru formuláře nastavujete nějaký text do TextBoxu. TextChanged nerozlišuje, jestli byl text změněn uživatelem, nebo programově.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji, právě že událost load je prázdná. Je to tedy tím, že mam v textboxech nastavené defaultní hodnoty text a konstruktor to bere tak že se text v textboxu mění z "" na "hodnota"?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ano. V konstruktoru třídy formuláře se volá metoda InitializeComponent, ve které se nastavuje text zadaný v návrhovém režimu. Přiřazení obslužných metod pro TextChanged proběhne dříve, než nastavení výchozího textu a proto to nastává.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vytvor si zpracovani udalosti az v kodu. Napr. po form shown http://msdn.microsoft.com/en-us/library/... .

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Děkuji všem za odpovědi.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zase nějaký chytrák... A co když je aplikace udělána tak, že okno po spuštění aplikace zůstane schované, tudíž Shown vůbec nenastane?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

I ty mudrlante! Pochopitelne kazdy problem ma vice reseni - ne jen jedno. Ja sem nabidl moznost. Zalezi na tazateli jak s tim nalozi. Jestli mu nabidnute reseni sedi do konceptu atp. Nebo mas kristalovou kouli, ze ktere vestis vlastnosti jeho aplikace?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Nemám, ale rozhodně nenavrhuju ubohá řešení, která fungují pouze za specifických okolností.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já to v podobných případech řeším tak, že si založím proměnou platnou pouze pro daný formulář např. IsLoaded as boolean = false. V údalosti Form.load pak na konci změním IsLoaded na true. U každé události kde potřebuji odfiltrovat co bylo spuštěno uživatelsky nastavím základní podmínku pro její další zpracování If IsLoaded then ...

Možná existuje nějaké jednodušší řešení, ale ani na tomto postupu nevidím nic špatného.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback