Label ändern, dann Aktion ausführen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von boomer.

    Label ändern, dann Aktion ausführen

    Hallo Leute!
    Ich habe ein Problem mit folgendem Codeteil:

    VB.NET-Quellcode

    1. 'ausgangstext von label ist "Ready"
    2. 'ausgangsfarbe von label ist LimeGreen
    3. Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
    4. label.Text = "Connecting..."
    5. label.ForeColor = Color.Coral
    6. Dim text As String
    7. Dim c As Net.WebClient = New Net.WebClient()
    8. text = c.DownloadString("http://meinewebsite.de/text.html")
    9. End Sub


    Wenn ich nun diesen Codeteil ausführe, ändert sich weder die farbe, noch der text von "label".
    Wenn ich den Code nun abändere, ...

    VB.NET-Quellcode

    1. 'ausgangstext von label ist "Ready"
    2. 'ausgangsfarbe von label ist LimeGreen
    3. Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
    4. label.Text = "Connecting..."
    5. label.ForeColor = Color.Coral
    6. Dim text As String
    7. Dim c As Net.WebClient = New Net.WebClient()
    8. text = c.DownloadString("http://meinewebsite.de/text.html")
    9. MsgBox(text)
    10. label.Text = "Ready"
    11. label.ForeColor = Color.LimeGreen
    12. End Sub


    ... und dann den Button klicke, passiert eine weile (~1-2sek) garnichts (text wird heruntergeladen). Danach öffnet sich, wie gewünscht, die msgbox mit dem text und es ändert sich GENAU in dem moment der label-text zu "Connecting...", was ich aber schon vor dem prozess des herunterladens des textes haben wollte. Wenn ich die Msgbox nun wieder schließe, ändert sich der label-text wieder zu "Ready" um.

    Wie kann ich es hinbekommen, das sich der label-text schon vor dem herunterladen des textes in "Connecting..." ändert, und nach der msgbox sich wieder in "Ready" ändert? ?(
    Weil die Form erst nach dem beenden der Methode aktualisiert wird!

    Du kannst das Teil aber austricksen mit

    VB.NET-Quellcode

    1. Me.Refresh()


    Es heisst dann:

    VB.NET-Quellcode

    1. 'ausgangstext von label ist "Ready"
    2. 'ausgangsfarbe von label ist LimeGreen
    3. Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
    4. label.Text = "Connecting..."
    5. label.ForeColor = Color.Coral
    6. Me.Refresh()
    7. Dim text As String
    8. Dim c As Net.WebClient = New Net.WebClient()
    9. text = c.DownloadString("http://meinewebsite.de/text.html")
    10. MsgBox(text)
    11. label.Text = "Ready"
    12. label.ForeColor = Color.LimeGreen
    13. End Sub





    //EDIT: Herzlich Willkommen im Forum ;)
    Es gibt eine allgemeingültige Regel die auch mal Ausnahmen zulässt:
    Gute Programmierer sind schlechte Grafiker und gute Grafiker sind schlechte Programmierer
    Kein Problem ;) Its my Job :D
    Es gibt eine allgemeingültige Regel die auch mal Ausnahmen zulässt:
    Gute Programmierer sind schlechte Grafiker und gute Grafiker sind schlechte Programmierer
    Was Boomer geschrieben hat, stimmt zwar.

    Eleganter ist der Weg, wenn Du die Async-Methoden der WebClient-Klasse nutzt. Hier kannst Du dann auf das Refresh() verzichten.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Das wissen wir alle selber... Nur lass ihn doch erstmal ein bisschen Spielen bevors an die Wurst geht. Vielleicht MUSS das ja so sein!
    Vllt will er doch nur was ganz einfaches machen? Ich zB mach die Apps für meinen Dad ohne Async weil der Web Server sowieso nebenan steht!
    Wenn er es so machen will lass ihn doch :)

    #topic wurde geklärt


    Edit by Manschula: Warum ein Vollzitat, wenn das Original direkt über dir steht? --> Unnötiges Vollzitat entfernt
    Es gibt eine allgemeingültige Regel die auch mal Ausnahmen zulässt:
    Gute Programmierer sind schlechte Grafiker und gute Grafiker sind schlechte Programmierer

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

    Es gibt immer 2 Arten, ein Problem zu lösen. Man schmiert um das eigentliche Problem drum rum und kommt letztendlich wieder an einer Sackgasse an oder man löst das Problem sofort, wenn es erkannt wird.

    Was hat das Nutzen von Async-Methoden damit zu tun, ob der WebServer nebenan steht? Egal, ich will mich mit Dir hier nicht rumstreiten.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Ich ebenso nicht, lass doch erstmal die kleinen Dinge lernen bevor die dicken Brummer kommen :P
    Es gibt eine allgemeingültige Regel die auch mal Ausnahmen zulässt:
    Gute Programmierer sind schlechte Grafiker und gute Grafiker sind schlechte Programmierer