chyba VB?   zodpovězená otázka

VB.NET, WinForms

Dobrý den,pokusil jsem se naprogramovat si aplikaci ale bohužel VB začal stávkovat a píše mi při stisku F5 hlášku

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

ikdyš to asi zní jednoduše já nenašel chybu,nejspíš jsem přehlédl nějakou maličkost ale nevím.Prosím poraďte.

Při spučtění prázdného,čistého formuláře bylo vše OK ale po vložení kodu¨

Public Class Form1
    Dim veta As String = TextBox1.Text
    Dim druhvety As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '-----------------------------------------------------------------------------
        If veta.EndsWith("?") = True Then      'pokud veta konci na "?"
            druhvety = 1                       'tak do promenne druh vety vepisi 1
        End If
        '-----------------------------------------------------------------------------
        If veta.EndsWith("!") = True Then      'pokud veta konci na "!"
            druhvety = 2                       'tak do promenne druh vety vepisi 2
        End If
        '-----------------------------------------------------------------------------
        If veta.EndsWith(".") = True Then      'pokud veta konci na "."
            druhvety = 3                       'tak do promenne druh vety vepisi 3
        End If
        '-----------------------------------------------------------------------------
        TextBox1.Clear()
        MsgBox(druhvety)
    End Sub
End Class

se VB "splašil" s onou hláškou,a to i po smazání napsaného kodu.

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

Takhle ti to chodit uz bude:

Public Class Form1
    Dim druhvety As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim veta As String = TextBox1.Text
        '-----------------------------------------------------------------------------
        If veta.EndsWith("?") = True Then      'pokud veta konci na "?"
            druhvety = 1                       'tak do promenne druh vety vepisi 1
        End If
        '-----------------------------------------------------------------------------
        If veta.EndsWith("!") = True Then      'pokud veta konci na "!"
            druhvety = 2                       'tak do promenne druh vety vepisi 2
        End If
        '-----------------------------------------------------------------------------
        If veta.EndsWith(".") = True Then      'pokud veta konci na "."
            druhvety = 3                       'tak do promenne druh vety vepisi 3
        End If
        '-----------------------------------------------------------------------------
        TextBox1.Clear()
        MsgBox(druhvety)
    End Sub
End Class

Jsem zacatecnik, takze o vysvetleni musis pozadat nekoho jineho. Me se to stalo ve skole a muj ucitel se snazil mi to nejak vysvetlit, ze visual basic nejdriv deklaruje promene a pak vytvari formulare, tak ze kdyz jsi napsal:

Dim veta As String = TextBox1.Text

Byl z toho zmateny, protoze v te dobe jeste nevedel, co to je TextBox1.Text.

No jestli je vysvetleni teto chyby jine, tak se omlouvam za klamani.

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

Děkuji,moc mi to pomohlo,a omlouvám se je to banální chyba a já blb ji zase udělal,tak se omlouvám byl to mou nepozorností zbytečný příspěvek.

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

VB se snaží před námi skrývat kód, který bychom neměli vidět. Když se podíváte do složky projektu průzkumníkem, uvidíte tam soubory Form1.vb a Form1.Designer.vb. Tyto dva soubory patří k sobě, ale VB.NET nám ukáže a dovolí editovat většinou jen ten první. Když se podíváte do toho druhého, který generuje VB podle toho, jak si naklikáte formulář, najdete v něm deklaraci Dim TextBox1 As TextBox a pak tam ještě v proceduře InitializeComponent najdete kód, který TextBox inicializuje a nastaví mu potřebné vlastnosti, aby byl tam, kde jej chceme. Tato procedura se ale spouští až poté, co VB vyřeší všechny úvodní deklarace, takže do proměnné veta přiřazujete hodnotu TextBox1.Text, přičemž TextBox1 ještě není zinicializován a obsahuje hodnotu Nothing.

Mimochodem nechápu, co vaše deklarace dělá na tomto místě, měla by být v proceduře, i kdyby tohle bylo nevyhazovalo výjimku, v době spouštění formuláře je stejně TextBox prázdný. Do proměnné přiřazujte až ve chvíli, kdy je v TextBoxu požadovaná hodnota.

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