Automatisch erstellte Labels komplett löschen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von VBHunter.

    Automatisch erstellte Labels komplett löschen

    Hallo,

    ich habe sowas wie eine Nachrichten Funktion in mein Programm.

    Wenn man jetzt z.b. auf ein Button klickt kommt statt einer MessageBox ein Label das den Text wiedergibt.



    hier der Code: wenn man z.b. auf ein Button klickt der diese Aktion dan ausführt

    VB.NET-Quellcode

    1. If Lagerplaetze < 10 Then
    2. NachrichtenText = "Ich bin ein Testtext"
    3. Nachrichtenerstellen()
    4. End If



    hier der Code: Auslösung !

    VB.NET-Quellcode

    1. Private Sub Nachrichtenerstellen()
    2. Nachrichtenzahlen += 1
    3. NachrichtenToolStripMenuItem.Text = "Nachrichten - " & Nachrichtenzahlen
    4. Dim a As New Label
    5. Dim Y As Integer = Label4.Location.Y
    6. Dim X As Integer = Label4.Location.X
    7. For Each T As Control In Me.Panel4.Controls
    8. If TypeOf T Is Label AndAlso T.Location.Y > Y Then Y = T.Location.Y
    9. Next
    10. a.Parent = Me
    11. a.Location = New Point(Label4.Location.X, Y + 40)
    12. Me.Panel4.Controls.Add(a)
    13. With a
    14. .Name = "Nachrichtenlabel"
    15. .Text = NachrichtenText
    16. .AutoSize = True
    17. End With
    18. End Sub


    Funktioniert alles super es werden nacheinander Labels erstellt untereinander.
    Jetzt will ich ALLE labels mit einen klick löschen (siehe Bild mit dem Button). Aber leider geht per klick immer nur ein Label weg, wie bekomme ich das hin das er alle Labels löscht?

    hier der Code: Klick auf Button

    VB.NET-Quellcode

    1. Dim a As New Label
    2. Me.Panel4.Controls.Remove(a)
    3. Me.Panel4.Controls.RemoveByKey("Nachrichtenlabel")


    vielen dank im Vorraus!!!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VBHunter“ ()

    VBHunter schrieb:

    VB.NET-Quellcode

    1. For Each T As Control In Me.Panel4.Controls
    2. If TypeOf T Is Label AndAlso T.Location.Y > Y Then Y = T.Location.Y
    3. Next
    Analog zu diesem Code, allerdings musst Du mit einer For-Schleife die Auflistung von hinten nach vorn durchlaufen, weil mit jedem Remove die Auflistung geändert wird.
    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 gibt mehrere Möglichkeiten den Label Text zu löschen.
    Entweder einzeln oder in einer For Each Schleife.
    Viel Erfolg! :)

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Me.Label1.Text = ""
    3. Me.Label2.Text = ""
    4. Me.Label3.Text = ""
    5. ' usw...
    6. ' oder
    7. For Each lbl As Control In Me.Controls
    8. If TypeOf lbl Is Label Then
    9. lbl.Text = ""
    10. End If
    11. Next
    12. End Sub
    Visual Basic.NET 8o
    MS-SQL
    8o
    Danke für eure antworten.

    @Cheffboss danke aber so war es leider nicht gemeint :D . Ich will die ganzen Labels löschen / entfernen .... ich Adde sie ja zuvor. Sprich der User hat die Nachricht gelesen und klickt auf Alle Nachrichten löschen und weg sind die Labels (die erstellt wurden).

    @RodFromGermany ah danke ... aber es geht ja soweit die Labels werden nacheinander gelöscht, will sie aber mit einen Klick alle gleichzeitig weg haben. ... Hast du vielleicht (bitte) ein beispiel.

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

    VBHunter schrieb:

    will sie aber mit einen Klick alle gleichzeitig weg haben
    Und ich will, dass es regnet. :thumbsup:

    VB.NET-Quellcode

    1. For i = Me.Panel4.Controls.Count - 1 To 0 Step -1
    2. If TypeOf Me.Panel4.Controls(i) Is Label Then
    3. Me.Panel4.Controls.RemoveAt(i)
    4. End If
    5. Next
    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!