Zvláštní chování v metodě load   zodpovězená otázka

VB.NET, Architektura

Dobrý den,

jedno z oken aplikace otevírám ze dvou různých míst.

-jednou metodou showdialog

-jednou metodou show

V obou případech ale, předtím nastavím otevíranéokno.owner = me.

V otevíráném okně je na prvním řádku metody load nastvena vlastnost visible jenoho ovládacího prvku na false a jen pokud je okno otevřeno konkrétním vlastníkem, nastaví se true.

ovládacíprvek.Visible = False
        
 If Me.Owner.Text = "JmenoJednohoZOken" Then
          
      ovládacíprvek.Visible = True
 End If

Pokud ale v aplikaci otevřu nejdříve okno z místa, kde se podmínka vyhodnotí na "true", okno rychle zavřu a rychle otevřu z místa, kde se podmínka vyhodnotí na false, u prvku zůstane nastaveno visible = true.

Pokud mezi tím počkám nebo ho zavřu a pak otevřu znova, tak už je to OK.

Nakonec jsem to vyřešil tak, že vlastnost visible = false nastavím ve FormClosing, ale i tak se mi nezdá, že by to bylo korektní chování.

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

Pokud okno zobrazujete "hovadským" způsobem - voláním metody Show(Dialog) jako by byla statická, potom je problém s největší pravděpodobností tam.

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

Díky za odpověď, ale prosím ještě o vysvětlení, co je na metodě okno.show() "hovadského?" Někdy mi přijde zbytečné, aby formulář, který jej volá, "čekal" než se zavře jako je tomu u okno.showdialog(). Ale samozřejmě si rád nechám poradit..

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

Čekat samozřejmě nemusí, podstatné je to, že budete mít plnou kontrolu nad jeho instancí (a tím pádem i momentu vzniku událostí Load atd.) a ne jako v případě statického VB6 volání (žádnou kontrolu nad jeho instancí). Příklad:

Class Form1
...
End Class

'Správně:
Dim f1 As New Form1
f1.Show(Me)

'Prasácky:
Form1.Show(Me)

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

Zajímavé, nikdy jsem to takto neviděl... Každopádně díky - budu se tím tedy řídit...

nahlásit spamnahlásit spam -1 / 1 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