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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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.:

1
2
3
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:

1
2
3
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

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