Výběr z comboboxu   otázka

VB.NET, Architektura

Ahoj snaží se udělat program, kde se po výběru pozdravu z ComboBoxu zobrazí pozrdrav.

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim frm As New Form1
        Dim pozdrav As String = frm.ComboBox1.SelectedItem

        Select Case pozdrav
            Case "Ahoj"
                MsgBox("Ahoj")
            Case "Čau"
                MsgBox("Čau")
            Case "Nazdar"
                MsgBox("Nazdar")

        End Select
    End Sub
End Class

Ale po výběru pozdravu a zmáčknutí tlačítka se nic neděje, ani nevyskočí chybová hláška. Co s tím?

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

Po kliknutí na tlačidlo vytvárate nový objekt typu Form1, teda nový formulár. Čo očakávate, že bude vybraté v ComboBoxe na tomto novom formulári? Pokiaľ procedúra Button1_Click patrí pod triedu Form1(resp. tlačítko Button1 je na forme Form1), tak dajte rovno ComboBox1.SelectedItem . Taktiež, premenná pozdrav je zjavne zbytočná, keďže len raz do nej dávate hodnotu, a tú použijete len raz. Taktiež aj blok Select Case je zbytočný, keďže to, čo dáte do konkrétneho Case, je "do bodky" opísané aj do MsgBoxu.

Čiže, pokiaľ máte Button1 na Form1, dal by som do kódu toto:

Public Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
MsgBox(ComboBox1.SelectedItem)
End Sub

Pokiaľ Button1 nie je na Form1, budete musieť predať odkaz na konkrétny objekt typu Form1 do triedy formulára, na ktorom je Button1. Konkrétnym objektom myslím premennú typu Form1, ktorá už má svoju hodnotu. Čiže takto nie:

REM NESPRÁVNE
Form1.ComboBox1.SelectedItem

REM OPÄŤ NESPRÁVNE:
Dim frm As New Form1
frm.ComboBox1.SelectedItem

Prečo? Form1 je názov triedy, nie jej objektu. Premenná frm v tomto príklade je síce konkrétny objekt typu Form1, ale jej hodnotou bude vždy nový a nový Form1, ktorého ComboBox1 bude samozrejme prázdny.

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

Děkuji za odpověď. Toto mi pomohlo.

Můžete to uzavřít.

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