VB .NET vs C#   zodpovězená otázka

C#, VB.NET

Skúšam sa naučiť niečo v C#. Kód nižšie som vo VB urobil za niekoľko sekúnd. V C# sedím nad tým hodiny a výsledok je nulový. Vie niekto poradiť? Ďakujem.

Public Class Form1
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Form2.ShowDialog()
    End Sub
End Class

Public Class Form2
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Form1.Button1.Text = "Toto je Vb .NET"
        Me.Close()
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Form3.Show()

    End Sub
End Class

Public Class Form3

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Form1.Button1.Text = "Kde je C#?"
        Form2.Close()
        Me.Close()
    End Sub
End Class
nahlásit spamnahlásit spam 0 odpovědětodpovědět

C# nepodporuje zrůdné volání instančních metod staticky...

Jakmile si jednou na ten hnus někdo zvykne a neuvědomuje si důsledky, pak už se toho těžko zbavuje.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Ja viem. Ale vo VB mi to funguje a je mi to jedno, či je to zrůdné alebo nie. Mám taký pocit, že C# podporuje iba bodkočiarky a zložené otázky.:-). Ďakujem za odpoveď.

P.s.

Myslíte, že kvôli tomu by mohla aplikácia padať?

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

V C# to mám vyriešené pre Form2, ale pre Form3 neviem nájsť riešenie.

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

Instanční metodu nejde na třídě volat prostě nikde ani ve VB.NET.

Důvodem proč jde ve VB.NET provést volání Form2.ShowDialog() je ten, že VB.NET vytvoří interní třídu MyProject+MyForms ve které je pro každý formulář vlastnost, která vytváří instanci daného formuláře, pak se provede volání My.Forms.Form2.ShowDialog()

To je specialita formulářů, rozhodně to neplatí pro jiné třídy.

No a v C# tedy nejprve vytvoříme tu instanci pomoci new a zavoláme metodu:

new Form2().ShowDialog();
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Super špecialita, že? :-). Ďakujem za informáciu.

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

Ano, jde to pouze u formulářů a je to z důvodu zpětné kompatibility s VB6.

nahlásit spamnahlásit spam 1 / 1 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