Ale ono Vám to funguje! V uvedeném kódu máte jenom jeden drobný nedostatek. Když spustíte standardní winForms aplikaci, pokud neřeknete jinak, spustí se Vám třída Form1. Ta si vytvoří nějakou svou instanci a běží, jednoduše se na ni odvoláváte jako na "Me" (jméno totiž neznáte). Nyní, pokud napíšete,
Dim prvniForm As New Form1
,ta je zapotřebí si uvědomit, že vytváříte ZCELA NOVOU instanci, tedy nový "Form", který je, shodou okolností, založen na "stejné šabloně, neboli třídě", tj. na Form1. Jinak řečeno, bude vypadat stejně jako Vaše "běžící" Form1, budou na něm stejná tlačítka a stejné prvky, ale bude to zcela samostatný objekt a mimo statických proměnných (které jsou společné všem instancím dané třídy) nebudou mít nadále již nic společného. pokud tedy měníte text labelu:
prvniForm.Label1.Text = "text druhého formuláře"
tak jej skutečně měníte, ale nic nevidíte, protože jste si ten nový druhý form (umně nazvaný "prvniForm") nezobrazil. zkuste tedy Váš kód upravit následovně (dovolil jsem si novému formu dát příhodnější jméno): Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dalsiForm As New Form1
dalsiForm.show()
dalsiForm.Label1.Text = "text změněn z předchozího formuláře"
End Sub
a vyzkoušejte, co to dělá - můžete i vícekrát (otevřít těch formů postupně více)
|