PictureBoxen mit der Anzahl an Button_Klicks erstellen

  • VB.NET

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

    PictureBoxen mit der Anzahl an Button_Klicks erstellen

    Hallo!

    Ich versuche grade eine Programm zu erstellen,der auf den Button_Klick reagiert,und mit den Anzahl der Klicks Controls erstellt...

    Ich versuchs so:

    VB.NET-Quellcode

    1. Dim x As Integer = 0
    2. x = x + Label1.Text -1
    3. Dim btnArray(x) As PictureBox
    4. For i As Integer = 0 To x
    5. btnArray(i) = New PictureBox
    6. With btnArray(i)
    7. .Parent = Me
    8. .Parent.Controls.Add(btnArray(i))
    9. .Name = "Button" & CStr(i)
    10. .TabIndex = i
    11. .Text = "Button(" & x & ")"
    12. .Size = New Size(80, 30)
    13. .Location = New Point(10, 10 + i * 2 * .Height)
    14. .Visible = True
    15. AddHandler .Click, AddressOf btnArray_Click
    16. End With
    17. Next i
    18. End Sub


    Doch damit werden sofort zB 4 PictureBoxen erstellt!

    Ich möchte,aber das es mit einem Klick auf den Button eine PictureBox hinzufügt und mit dem nächsten die erste PictureBox speichert und die zweite hinzufügt...

    Mit dem Code klappts nicht...

    Hoffe auf Hilfen...

    Mfg.eniking1998

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

    Manawyrm schrieb:

    Absoluter Bullshit ist das!
    @enIking1998: Das ist Option Strict Off.
    Schalt mal sofort um auf Option Strict On.
    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!
    Jetzt auch noch den Code editieren??

    x = x + Label1.Text -1

    Was bitte? Warum x + Label1.Text - 1 ?

    Du hast doch gerade erst x mit 0 festgelegt. Unnötig!
    Label1.Text ist ein String! Kein Integer! Außerdem ist das ein Label! Warum ließt du eine feste Zahl aus einem Label aus!
    Formelemente dürfen nichts mit dem Codebehind zutun haben!
    ...Deshalb frag ich ja...

    Also von den Label (dort steht eine 4) wird 1 abgezogen...

    Und bis sie 0 erreicht hat,soll mehr und mehr PictureBoxen erstellt werden...

    Doch da ist das Problem...

    Ich versuch nicht aufeinmal alle Controls zuerstellen sondern pro Klick...

    Aber mit dem Code geht es nicht...

    Mfg.eniking1998

    VB.NET-Quellcode

    1. Dim anzahl as Integer = 4
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Dim rnd As New Random()
    4. Dim p As New PictureBox() With {.Size = New Size(100, 100), .BorderStyle = BorderStyle.FixedSingle, .BackColor = Color.Red, .Location = New Point(rnd.Next(0, 200), rnd.Next(0, 200))}
    5. Me.Controls.Add(p)
    6. anzahl = anzahl - 1
    7. Label1.Text = anzahl.ToString
    8. End Sub


    ?! Wenn es pro Klick ist dann nutze das Click-Event.
    (Um das Ganze noch eine If-Schelife ob anzahl = 0 ist)
    Hi,ich steh wieder vor einem Problem:

    Und zwar soll man nun die hergestellen PictureBoxen (zum Test Buttons genommen) nun auch verschieben können...

    Das klappt,doch es wird nur EIN Button erstellt!

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim pos1pic As New Point(0, 0)
    3. Dim pos1cursor As New Point(0, 0)
    4. Dim rnd As New Random()
    5. Dim p As New Button() With {.Size = New Size(100, 100), .BackColor = Color.Red, .Location = New Point(rnd.Next(0, 200), rnd.Next(0, 200))}
    6. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    7. Dim x As Integer = My.Settings.test
    8. Dim btnArray(x) As PictureBox
    9. For i As Integer = 0 To x
    10. btnArray(i) = New PictureBox
    11. With btnArray(i)
    12. .Parent = Me
    13. .Parent.Controls.Add(btnArray(i))
    14. .Name = "Button" & CStr(i)
    15. .TabIndex = i
    16. .Text = "Button(" & x & ")"
    17. .Size = New Size(80, 30)
    18. .Location = New Point(10, 10 + i * 2 * .Height)
    19. .Visible = True
    20. .BackColor = Color.AliceBlue
    21. End With
    22. Next i
    23. End Sub
    24. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    25. Dim anzahl As Integer = Label1.Text
    26. If Label1.Text = "0" Then
    27. MsgBox("Du hast keine Buttons mehr!")
    28. Else
    29. My.Settings.test = My.Settings.test + Label1.Text
    30. Me.Controls.Add(p)
    31. anzahl = anzahl - 1
    32. Label1.Text = anzahl
    33. AddHandler p.MouseDown, AddressOf start_
    34. AddHandler p.MouseUp, AddressOf stop_
    35. End If
    36. End Sub
    37. Private Sub synch()
    38. pos1pic = p.Location
    39. pos1cursor = System.Windows.Forms.Cursor.Position
    40. End Sub
    41. Private Sub start_()
    42. Timer1.Enabled = True
    43. synch()
    44. End Sub
    45. Private Sub stop_()
    46. Timer1.Enabled = False
    47. End Sub
    48. Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    49. p.Location = pos1pic - pos1cursor + System.Windows.Forms.Cursor.Position
    50. End Sub
    51. End Class


    Nun,ich versuch also wieder die Anzahl,die im Label stehen,zu erstellen,doch dieses Mal soll man sie verschieben können...

    Hoffe auf Hilfe...

    Mfg.eniking1998
    Oki:

    Dank deineem Beispiel des vorherigen Post,hab ich geschafft,dass Controls erstellt werden...
    Nun will ich ein Schritt weiter und die erstellten Controls verschieben...

    Wenn ich nun 3 x auf den Button klicke wird NUR EINER erstellt und nur den EINEN kann ich verschieben...

    Mfg.eniking1998

    enIking1998 schrieb:

    VB.NET-Quellcode

    1. Dim p As New Button() With {.Size = New Size(100, 100), .BackColor = Color.Red, .Location = New Point(rnd.Next(0, 200), rnd.Next(0, 200))}
    Das musst Du jedes Mal wieder aufrufen, wenn Du einen neuen Button erstellen willst.
    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!