Class - triedy   zodpovězená otázka

Algoritmy, .NET

Dobrý večer.

Pokúšam sa pochopiť prácu s triedami a jednej veci nerozumiem, samozrejme je ich viac, ale teraz mi nefunguje toto:

Mám triedu:

Public Class Trieda1
    '''' <summary>
    '''' Vypočíta súčet čísel
    '''' </summary>
    '''' <param name="cislo1"></param>
    '''' <param name="cislo2"></param>
    '''' <remarks></remarks>
    'Sub New(ByVal cislo1 As Integer, ByVal cislo2 As Integer)
    '    MsgBox(cislo1 + cislo2)
    '    Return
    'End Sub

    '''' <summary>
    '''' Zapíše a vypočíta rozdiel
    '''' </summary>
    '''' <param name="text1"></param>
    '''' <param name="cislo2"></param>
    '''' <param name="cislo3"></param>
    '''' <remarks></remarks>
    'Sub New(ByVal text1 As String, ByVal cislo2 As Integer, ByVal cislo3 As Integer)
    '    MsgBox(text1 & ": " & cislo2 - cislo3)
    'End Sub
    Private _text2 As String
    ''' <summary>
    ''' Zadaj alebo získaj Text2
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Text2() As String
        Get
            Return _text2
        End Get
        Set(ByVal value As String)
            _text2 = value
        End Set
    End Property
    ''' <summary>
    ''' Vypíše Txt2 v MsgBox
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Zobraz()
        MsgBox(_text2)
    End Sub
End Class

ktorú volám z Form1

Public Class Form1
    Dim c As Trieda1

    'Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '    c = New Trieda1(1, 2)
    'End Sub

    'Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    '    c = New Trieda1("Toto je iné kafe ", 13, 7)
    'End Sub
   
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        c = New Trieda1
        c.Text2 = "No toto!"
        c.Zobraz()
    End Sub
End Class

a funguje mi to buď zavolaním z Button1 a Button2, teraz je to zeleným, alebo Button3. Súčasne to nefunguje. Vysvetlil by mi niekto, prosím, čomu ešte nerozumiem.

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

Nefunguje to proto, že nepředáváte konstruktou (metoda NEW) žádný parametr. Vy máte ve třídě přetěžovaný konstruktor. Jednou se 2 parametry (to máte v události u tlačítka Button1) a jednou se 3 parametry (událost tlačítka butto2). Aby Vám fungovalo i to co máte u třetího buttonu, musíte do třídy přidat konstrukto bez parametrů, tzn.:

    Sub New()
       'nějáký kód
    End Sub

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

Pokud to necháte zakomentované, bude fungovat pouze třetí button (protože pokud tam nedáte konstruktor, bere to jako že tam je metoda NEW bez parametrů) , pokud to odkomentujete, budou fungovat pouze první dva. Problém proč to nefunguje současně jsem popsal výše.

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

Neuveriteľné! Funguje! A časom to možno aj pochopím:-).

Ďakujem.

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

Je to jednoduché:) Pokud do třídy nedáte žádný konstruktor (metoda New), chová se to stejně, jako kdyby tam byl prázdný konstruktor bez parametrů, tedy:

Sub New()

End Sub

To ale funguje pouze tehdy, pokud do třídy nedáte žádnou metodu New, . Pokud ale přidáte vlastní konstruktor (s nějákými parametry), třída už konstruktor má a pokud ho tedy chcete volat s jiným počtem parametrů (nebo bez nich), musíte ho přetížit (přidat další metodu New s odpovídajícím počtem parametrů nebo bez nich)

Další možností by bylo vytvořit konstruktor a jeho parametry označit jako nepovinné (Optional)

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

Zdravím, chcel by som Vás poprosiť o pomoc mimo túto tému

Neviem ako mám donútiť po stlačení "ENTER" v DataGridView aby

neaktivoval bunku v ďaľšom riadku, ale aby aktivoval v tom istom

riadku ďaľšiu v následujúcom stĺpci

ďakujem

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

Poprosil by som Vás založiť nové vlákno. Niečo mám, čo by Vám možno mohlo pomôcť...

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

Je založené "Pohyb po DataGridView" momentálne

už presunuté do "Aktualizovaná témata".

ďakujem

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

Pochopil som Vaše vysvetlenie už predtým, ta veta bol iba žart. Ale ešte raz ďakujem. Tým, že ste mi to vysvetlili, sa mi objasnilo oveľa viac vecí v triedach. Veľmi ste mi pomohli.

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