Steuerelemente während der Laufzeit erstellen, Problem

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von sysnews.

    Steuerelemente während der Laufzeit erstellen, Problem

    Hallo!

    Ich fange gerade an, ein kleines Programm zur Übung (bin fortgeschrittener Anfänger ^^, denke ich) zu schreiben.
    Für dieses Programm muss ich mehrere Picture-Boxen während der Laufzeit erstellen lassen, weil ich die Anzahl im Programm ändern will.
    Ich habe schon einen Code, der soweit eigentlich schon funktioniert, doch irgendwie erstellt er mir nur eine einzelne PictureBox!
    Hier der Code: (Habe es mit Checkboxen zum Test gemacht!)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim PBox(Anzahl) As CheckBox
    3. Dim Anzahl As Integer = 3
    4. Private Sub Form1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. Dim IndexZahl As Integer = 0
    6. For IndexZahl = 0 To Anzahl
    7. PBox(IndexZahl) = New CheckBox
    8. PBox(IndexZahl).Name = "PBox" & IndexZahl.ToString
    9. PBox(IndexZahl).Left = 13
    10. PBox(IndexZahl).Top = 28 * IndexZahl + 28
    11. PBox(IndexZahl).Height = 24
    12. PBox(IndexZahl).Text = "Nummer " & IndexZahl
    13. PBox(IndexZahl).Tag = IndexZahl.ToString
    14. Controls.Add(PBox(IndexZahl))
    15. Next IndexZahl
    16. End Sub
    17. End Class


    //Edit
    Sry hatte nicht drauf geschaut :)

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

    Mach mal Option Strict on und dann dieses Beispiel

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Public Class Form1
    4. Private Sub Form1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. Dim PBox(4) As CheckBox ' Platz für 5 CheckBoxen
    6. For i = 0 To PBox.GetUpperBound(0)
    7. PBox(i) = New CheckBox
    8. PBox(i).Name = "PBox" & i.ToString
    9. PBox(i).Left = i * 50
    10. PBox(i).Top = 28 * i + 28
    11. PBox(i).Height = 24
    12. PBox(i).Text = "Nummer " & i.ToString
    13. PBox(i).Tag = i.ToString
    14. Controls.Add(PBox(i))
    15. Next i
    16. End Sub
    17. End Class
    @Bernd: habe link zu gleiche source gepostet...bisl runter scrollen steht komplette code direckt vor die nase:

    VB.NET-Quellcode

    1. Code in einem Windows Forms-Codemodul (Form1)
    2. '
    3. Public Class Form1
    4. Inherits System.Windows.Forms.Form
    5. Private btnArray(9) As Button ' Dies wird unser Control-Array!
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. ' 10 Buttons neu erzeugen
    8. For i As Integer = 0 To 9
    9. ' Neuen Button erzeugen
    10. btnArray(i) = New Button
    11. ' Den erzeugten Button verwenden:
    12. With btnArray(i)
    13. ' Parent festlegen und Controls-Collection erweitern
    14. .Parent = Me
    15. .Parent.Controls.Add(btnArray(i))
    16. ' Verwaltungsinformationen zuweisen
    17. .Name = "Button" & CStr(i)
    18. .TabIndex = i
    19. ' Darstellung: Beschriften und positionieren
    20. .Text = "Button(" & CStr(i) & ")"
    21. .Size = New Size(80, 30)
    22. .Location = New Point(10, 10 + i * 2 * .Height)
    23. .Visible = True
    24. ' Auf das Click-Ereignis reagieren können:
    25. AddHandler .Click, AddressOf btnArray_Click
    26. End With
    27. Next i
    28. End Sub
    29. Private Sub btnArray_Click(ByVal sender As Object, _
    30. ByVal e As System.EventArgs)
    31. ' Click-Ereignis des Button-Arrays auswerten
    32. Dim itemClicked As Button = CType(sender, Button)
    33. Dim index As Integer = -1I
    34. ' Das betroffene Element im Array suchen (allgemein);
    35. ' Möglich wäre etwa auch das Vorgehen über die eigens
    36. ' zugewiesene Name-Eigenschaft des Buttons.
    37. For i As Integer = LBound(btnArray) To UBound(btnArray)
    38. If btnArray(i) Is itemClicked Then
    39. index = i
    40. Exit For
    41. End If
    42. Next
    43. If index > 0 Then ' Element im Array gefunden (sonst index = -1)
    44. ' Kurze Informations-MessageBox für das Codebeispiel
    45. MessageBox.Show("Sie haben den Button Nr. " & CStr(index) & " angeklickt", _
    46. "Index des Buttons ermittelt", _
    47. MessageBoxButtons.OK, _
    48. MessageBoxIcon.Information)
    49. End If
    50. End Sub
    51. End Class
    lol nicht streiten ^^
    thx ich schaus mir an

    //Edit
    Okay ich habs mir angeschaut, blick nur nicht ganz durch. Also ich versuche jetzt bei allen ein Click-Event ausführen zu lassen. Wie stelle ich das jetzt am besten an?

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