Button Click Ereignis Wiederholen

  • VB.NET

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

    Button Click Ereignis Wiederholen

    Guten tag,
    Ich will gerne wenn ich auf ein Button drücke Punkte zeichnen lassen.
    Wenn ich einmal auf den Button drücke, zeichnet er die Punkte, beim nächsten klick zeichnet er neue Punkte.
    Wie bekomme ich das so hin, dass er beim 1. klick Punkte zeichnet und beim 2. klick die neuen Punkte dazuzeichnet, also das die Punkte vom 1. klick nicht gelöscht werden.
    Bitte dringend um Hilfe


    Edit:
    Ich habe eine Idee, jedoch keinen Plan für die Umsetzung.
    Kann man eine Schleife mit "For" so oft wiederholen, wie oft man auf einen Button klickt?
    Das wäre genau das, was ich bräuchte.

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

    eine List (Of Point) anlegen, bei jedem Klick einen Punkt anhängen und im Paint-Ereignis die gesamte Liste zeichnen.
    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!

    VB.NET-Quellcode

    1. Private ll As New List(Of Point)
    2. Private Sub Button_Click()
    3. ll.Add(New Pount(x,y))
    4. End Sub
    5. Private Sub Paint() Handles PictureBox1.Paint
    6. Dim g As Graphics = e.Graphics
    7. For Each pt As Point in ll
    8. ' hier die Liste abarbeiten
    9. ' ...
    10. Next
    11. End Sub
    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!
    Das mit der List ist mir nicht ganz schlüssig.

    beim ersten klick auf den button werden in der Picturebox zufällige Punkte gezeichnet, die jedoch beim 2. klick auf den Button gelöscht und durch neue ersetzt werden.
    Ich will erreichen, dass die Punkte vom ersten Klick nicht gelöscht werden, sondern dass die Punkte vom 2. klick einfach dazu kommen
    und beim 3. auch usw.
    Schick doch mal den Code, wie die Punkte generiert und gezeichnet werden.
    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!

    If btnSimulationClicked Then
    ReDim Punkte(MaxAnzahlPunkte)For pid = 0 To MaxAnzahlPunkte - 1
    Punkte(pid).X = Rnd() * (xMax - xMin) + xMin
    Punkte(pid).Y = Rnd() * (yMax - yMin) + yMin
    e.Graphics.FillEllipse(bRot, KartesischZuPixel_x(Punkte(pid).X, xMin, xMax, xPxlMax) - Punktradius, KartesischZuPixel_y(Punkte(pid).Y, yMin, yMax, yPxlMax) - Punktradius, 2 * Punktradius, 2 * Punktradius)
    Next
    EndIf

    das ist das Ereignis, dass bei jedem Klick wiederholt werden soll.
    In welcher Routine steht denn der Code?
    Doch wohl nicht in Button_Click()?
    Wenn das in Paint steht, musst Du aufrufen:

    VB.NET-Quellcode

    1. Private Sub Button_Click()
    2. MyGraphicsObject.Invalidate()
    3. MyGraphicsObject.Update()
    4. End Sub

    MyGraphicsObject ist der Name Deiner PictureBox oder Me, falls Du direkt in die Form Zeichnest.
    Das

    VB.NET-Quellcode

    1. ReDim Punkte(MaxAnzahlPunkte)

    löscht die Punkte.
    Nimm statt des Feldes eine List(Of Point)
    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!
    Es steht unter Paint..

    Private Sub Button_Click()
    MyGraphicsObject.Invalidate()
    MyGraphicsObject.Update()
    End Sub
    Funktioniert nicht. Dann löscht er die alten punkte und ersetzt sie immer wieder automatisch durch neue, ohne dass ich klicke.
    Ist das nicht sehr aufwendig mit der Liste? Bei mehreren tausend punkten?
    Gruß
    Du solltest Deine Programmphilosophie erst einmal gründlich überarbeiten.
    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!