Eigene Klasse

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von FrankTheTank.

    Eigene Klasse

    Hallo, Ich habe mir eine eigene Klasse erstellt.

    VB.NET-Quellcode

    1. <Serializable()> _
    2. Public Class Karten
    3. Public Property Karte1 As Integer
    4. Public Property Karte2 As Integer
    5. Public Property Karte3 As Integer
    6. Public Property Karte4 As Integer
    7. Public Property Karte5 As Integer
    8. Public Property Karte6 As Integer
    9. Public Property Karte7 As Integer
    10. Public Property Karte8 As Integer
    11. Public Property Karte9 As Integer
    12. Public Property Karte10 As Integer
    13. Public Property Karte11 As Integer
    14. Public Property Karte12 As Integer
    15. Public Property Karte13 As Integer
    16. Public Property Karte14 As Integer
    17. Public Property Karte15 As Integer
    18. Public Property Karte16 As Integer
    19. Public Property Karte17 As Integer
    20. Public Property Karte18 As Integer
    21. Public Property Karte19 As Integer
    22. Public Property Karte20 As Integer

    Das funktioniert auch alles.

    Nun habe ich das Problem, ich bekomme aus dem Programm einen Wert zwischen 1 und 20.
    Nun möchte ich mit dem Wert einen Wert aus der Klasse Lesen oder Schreiben.
    Habe es so versucht, was nicht geht.

    VB.NET-Quellcode

    1. Name="Karte" & Wert
    2. Karten.Name=10

    Kann mir jemand helfen?
    Für sowas nimmt man ein Array.
    Beispiel:

    VB.NET-Quellcode

    1. <Serializable()> _
    2. Public Class Karten
    3. Public Property Karten() As Integer()
    4. Public Sub New()
    5. Karten = New Integer(19)
    6. End Sub
    7. End Class
    8. Name = "Karte" & Wert.ToString() ' Option Strict On!
    9. Karten.Karte(Name) = 10
    Das ist eine sehr gute Idee.
    Hätte ich auch selber drauf kommen müssen.
    Aber bei mir funktioniert es nicht.

    VB.NET-Quellcode

    1. Public Class Karten
    2. Public Property Karte() As Integer
    3. Public Sub New()
    4. Karte = New Integer(19)
    5. For x = 0 To 20 - 1
    6. Karte(x) = 0
    7. Next x
    8. End Sub
    9. End Class

    Die Probleme habe ich bei

    VB.NET-Quellcode

    1. Karte = New Integer(19)
    ."Der Typ Integer hat keinen Konstruktor".
    Ist mir gerade aufgefallen.
    Schon lange nicht mehr mit VB beschäftigt, probier's mal so:

    VB.NET-Quellcode

    1. Karte = New Integer(19) {}

    VB.NET-Quellcode

    1. Dim Ints() As Integer
    2. Ints = New Integer(10) {}
    3. Console.WriteLine(Ints.Length)
    4. Console.ReadLine()
    Funktioniert bei mir. Gibt mir 11 aus (0-10).

    Bekommst du eine Fehlermeldung? Falls ja, poste die mal bitte.
    So hab es geschafft. So muss es aussehen.

    VB.NET-Quellcode

    1. <Serializable()> _
    2. Public Class Karten
    3. Public Property Karte() As Integer()
    4. Public Sub New()
    5. Karte = New Integer(243) {}
    6. For x = 0 To 243
    7. Karte(x) = 0
    8. Next
    9. End Sub
    10. End Class

    Danke noch mal an alle für die Tipps. :thumbsup:
    Deine For-Schleife ist unnötig.
    Der Default-Wert von Integern ist 0, daher brauchst du den nicht extra definieren.
    Es macht also überhaupt keinen Unterschied und braucht nur unnötige Rechenleistung. ;)

    (ist denke ich bei allen Werttypen so, da sie ja auf kein Objekt verweisen)
    Ok Danke.
    Nun habe ich noch das Problem, das ich mehrere GroupBoxes mit einem Picture zur Laufzeit erstelle.

    VB.NET-Quellcode

    1. Dim Gb As New GroupBox
    2. With Gb 'Groupbox Werte zuweisen
    3. .Text = "Karte " & Nummer
    4. .Name = "GB" & Nummer
    5. .Height = 251
    6. .Width = 139
    7. .Top = oben
    8. .Left = links
    9. End With
    10. Me.Controls.Add(Gb) 'Groupbox zu Form hinzufügen
    11. Dim Bild As New PictureBox
    12. With Bild 'Bild Werte zuweisen
    13. .Name = "P" & Nummer
    14. .Height = 169
    15. .Width = 120
    16. .Top = 19
    17. .Left = 6
    18. .Image = Image.FromFile("Bilder\TC-SWFA2-" & Nummer2 & ".jpg")
    19. End With
    20. Me.Controls("GB" & Nummer.ToString).Controls.Add(Bild) 'Bild zu Form.Groupbox hinzufügen


    Diese muss ich aber auch zur Laufzeit löschen. Ich habe es So verscuht, aber funktioiert nicht richtig.

    VB.NET-Quellcode

    1. For x = 1 To 244
    2. If Len(Me.Controls("GB" & x.ToString).Text) > 1 Then
    3. Me.Controls.Remove("GB" & x.ToString)
    4. Me.Controls("GB" & x.ToString).Dispose()
    5. End If
    6. Next x

    FrankTheTank schrieb:

    Diese muss ich aber auch zur Laufzeit löschen. Ich habe es So verscuht, aber funktioiert nicht richtig.

    FrankTheTank schrieb:

    sagt mir VB Fehler (Der Wert vom Typ "String" kann nicht in "System.Windows.Forms.Control" konvertiert werden.).

    Warum kommt denn die Info nicht sofort, sondern erst nach peinlicher Nachfrage? :(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke, und entschuldigung.
    Ich habe noch das Problem das ich nicht richtig ermitteln kann ob das Objekt überhaupt existiert.
    Reicht es die Groupbox zu löschen, damit die darin enthaltenen Objekte automatisch mit gelöscht werden?
    Meine App soll die Kartensammlung meiner Kinder Grafisch mit Anzahl der Karten darstellen.
    Ich habe eine Option nur bestimmte oder alle Karten anzuzeigen.
    diese werden in 6 Spalten und x Zeilen zur Optischen verbesserung in Groupboxen dargestellt.
    Wenn ich nun von alle Karten auf eine andere Option gehe muss ich die Elemente löschen um nur die ausgewählten anzeigen zu können ohne das ich leerfelder bekomme. Daher blende ich die Objekte nicht einfach aus.
    Bin leider nur Hobby Programmierer, und hatte schon lange nichts mehr Programmiert. Daher mein vielen fragen.