PictureBox array erstellen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Aydo.

    PictureBox array erstellen

    Hi,

    wollte mal fragen wie ich PictureBox array's erstelle.
    Habs mal so versucht:

    VB.NET-Quellcode

    1. Dim px As PictureBox = New PictureBox()
    2. For i As Integer = 0 To 5
    3. px.Height = 20
    4. px.Width = 20
    5. px.Left = 50 * i
    6. px.Top = 50 * i
    7. px.BackColor = Color.Red
    8. Next


    Was genau ist an meinem code falsch?
    Sinn und Zweck der Sache ist: Ich will in meinem Spiel nicht jede Wand neu festlegen.

    Danke! ^^
    Du deklarierst kein Array. Die Klammern () müssen hinter dem Variablennamen stehen und nicht hinter dem Variablentypen

    VB.NET-Quellcode

    1. Dim px() As Picturebox


    Bei einem Array, kann man die Elemente nicht direkt mit New Deklarieren - wäre warscheinlich die nächste Fehlermeldung.
    Die Grenzen von Arrays kannst du schon vorher setzen, was sinnvoll ist, wenn du die Grenzen kennst.

    VB.NET-Quellcode

    1. Dim px(0 to 5) As Picturebox


    Die Eigenschaften könnte man dann wie folgt zuweisen.

    VB.NET-Quellcode

    1. Dim tBitmap(0 To 5) As PictureBox
    2. For c As Byte = 0 to tBitmap.GetUpperBound
    3. tBitmap(c) = New PictureBox() With {.Width = 20, .Height = 20, .Left = 50 * c, .Top = 50 * c, .BackColor = Color.Red}
    4. Next


    Auf ein bestimmtes Element eines Arrays greifst du zu, indem du den Namen des Arrays mit dem Index des Elements in Klammern dahinter schreibst tBitmap(3) wäre damit die VIERTE, nicht die dritte Picturebox, weil Arrays die 0 immer mitzählen. Die Funktion GetUpperBound gibt immer die obere Grenze eines Arrays an.

    Ich hoffe ich konnte weiterhelfen
    Uh, ja, hab die Dimension vergessen.

    Ein Array kann mehr als eine Dimension haben, das kann dann zB so aussehen px(0 to 5, 0 to 6)
    Das bedeutet, dass du 6 Arrays haste, die wieder jeweils 7 Elemente beinhalten, also insgesamt 6*7 = 42 Elemente. Die Anzahl der Dimensionen ist dabei gleich der Anzahl der Bereiche des Arrays. In dem Beispiel gerade sind es zwei Dimensionen. Die Dimensionen erhalten genau auf die gleiche Weise Indizes wie die Elemente des Arrays, sprich
    Dimension 1 hat Index 0, Dimension 2 den Index 1 usw.

    In deiner Frage hat das Array nur eine Dimension und deswegen müsste ich eigentlich geschrieben haben

    VB.NET-Quellcode

    1. For c As Byte = 0 to tBitmap.GetUpperBound(0)

    Weil ich wissen will, wie viele Elemente das Array in der Dimension 1 hat, also mit Index 0. Der Rückgabewert wäre hierbei 5.

    VB.NET-Quellcode

    1. Dim tBitmap(0 To 5) As PictureBox
    2. For c As Byte = 0 to tBitmap.GetUpperBound(0)
    3. tBitmap(c) = New PictureBox() With {.Width = 20, .Height = 20, .Left = 50 * c, .Top = 50 * c, .BackColor = Color.Red}
    4. Next
    Danke!
    Scheint zu funktionieren.
    Jetzt muss ich die Pictureboxen noch anzeigen lassen. Folgendes habe ich schon ausprobiert:

    VB.NET-Quellcode

    1. Me.Controls.Add(tBitmap)


    bzw.

    VB.NET-Quellcode

    1. Me.Controls.Add(Me.tBitmap)


    Geht das denn so? Oder muss ich die anderes anzeigen lassen.

    Danke im Voraus! ^^

    Edit:
    Hat sich geklärt!
    Me.Controls.Add(tBitmap) klappt, hatte es nur nicht in der For Schleife drinnen. :)
    Trotzdem vielen Danke Aeonos!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Aydo“ ()