Chyba při spuštění debug   zodpovězená otázka

VB.NET, Testování

Dobrý den, mám problém. Když stisknu start debugging, tak mi naskočí hláška:

"InvalidOperationException was unhandled

Při vytváření formuláře došlo k chybě. Podrobnosti viz Exception.InnerException. Chyba: Odkaz na objekt není nastaven na instanci objektu."

A zvýrazní mi to žlutě tento kod:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Form3.Visible = True
    End Sub

Nevíte někdo v čem je problém ? Normálně mi to všechno chodilo a najednou dám debugging po několikátý a nejde to. Je to divný.

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

Je Form3 platná instance formuláře?

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

Jak instance ? Jsem začátečník a v pojmech se ještě moc nevyznám.

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

Pokud není volaná vlastnost nebo metoda třídy statická (Shared), musí se vytvořit instance dané třídy pomocí klíčového slova New.

Dim f As New Form3()
f.Visible = True

Ve VB.NET 2005/2008 jde použít i "bezinstanční" přístup k formulářům (známý z VB6), tudíž pokud existuje Form3 tak by

Form3.Visible = True

mělo fungovat.

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

Je možné, že tazatel Form3 do projektu již vložil ve vývojovém prostředí a neměl důvod měnit Visible.

Pro tazatele. Zkuste:

  Private Sub Button3_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button3.Click
    Form3.Show()
  End Sub

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

Omlouvám se, ono to funguje jak jste napsal, tedy i bez Show - netušil jsem, že vložený další formulář má po spuštění Visible=False

Pokud by formulář neexistoval, bude Form3.Visible = True označeno jako chyba již před spuštěním. Problém bude asi v některém prvku na formuláři.

Dodatek:

Ale definice "Dim f As New Form3()" není možná, pokud Form3 neexistuje. Pokud existuje, tak definice vytvoří další instanci, problém nejspíš zůstane.

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

Máte pravdu, já sem chtěl pouze demonstrovat vytvoření nové instance z existující definice třídy.

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