Předání proměnné druhému formulář   otázka

VB.NET, WinForms

Zdravím.

Mám kód ve form1 pro button1_click:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim f2 As New Form2()
        f2.ShowDialog()
        Dim a As String
        a = "neco"
        

    End Sub

kterým při button1_click přiřadím do prom. a = "neco" a otevřu form2, a kód

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim f1 As New Form1()
        Dim a As String = f1.a
        Dim text As String
        If a = "neco" Then
text = "blabla"
        End If
    End Sub

Ale nevím jak tu prom. a poslat tomu druhému formu. Poradíte?

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

Dobrý den.

Tak např. pomocí konstruktoru Formu2.

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

Vytvořte si vlastnost ve třídě Form2 ke které bude moct přistupovat i Form1. To jak udělat vlastnost naleznete:

http://www.vbnet.cz/clanek--107-vb_net_o...

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

Už z toho kódu je jasné, že to takto fungovat nemůže. Jde o to jak postupně je kód procedury Button1_Click procházen/vykonáván.

Přes řádek "Dim a As String" Vám program vůbec neprojde dokud nedojde k uzavírání f2, takže proměná "a" není při otevření f2 vůbec inicializovaná.

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

Přesně tak. A když použijete showDialog kod čeká na zavření formuláře.

Možností jak to vyřešit je více. Například Vaši proměnou nadeklarovat jako public aby se do ni dalo přistupovat i z ostatních formulářů.

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

Víte co, podívejte se do seriálu o VB.NET pro úplné začátečníky, někde v 9. díle (http://www.vbnet.cz/clanek--34-vb_net_od... ) máte přesně popsáno, jak se s formuláři pracuje. Kód, který jste sem poslal, svědčí o tom, že moc nerozumíte principu, můžete si to tedy z článku nastudovat.

Nejlepší možností je do Form2 přidat buď vlastnost, nebo pro začátek stačí Public proměnná, do které před zobrazením uložíte instanci Form1. Pak ve Form2 můžete přes tu proměnnou přistupovat k instanci Form1.

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