ToolStripStatusLabel aktualisiert nicht

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von _PASCAL_.

    ToolStripStatusLabel aktualisiert nicht

    Hallo,

    ich habe auf einem Form unten einen StatusStrip1 eingebaut. (Bild)

    die Progressbar wird auch schön aktualisiert beim Einlesen der Daten, nur der StatusLabel wird nicht gesetzt, erst zum schluss steht "fertig!" da.

    was mache ich da falsch ?

    VB.NET-Quellcode

    1. Private Sub ÖffnenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÖffnenToolStripMenuItem.Click
    2. Dim FolderBrowser As New FolderBrowserDialog
    3. Dim stalabel As ToolStripStatusLabel = Me.ToolStripStatusLabel1
    4. Dim staprogress As ToolStripProgressBar = Me.ToolStripProgressBar1
    5. All_Files.Clear()
    6. FolderBrowser.Description = "Bitte Ordner auswählen ..."
    7. FolderBrowser.SelectedPath = settings(ROOT_FOLDER).get_value
    8. FolderBrowser.ShowNewFolderButton = True
    9. If FolderBrowser.ShowDialog() = Windows.Forms.DialogResult.OK Then
    10. Dim root_dir As New DirectoryInfo(FolderBrowser.SelectedPath)
    11. Dim Directories As New List(Of String)
    12. Cursor.Current = Cursors.WaitCursor
    13. staprogress.Visible = True
    14. staprogress.Value = 0.1 * staprogress.Maximum
    15. stalabel.Text = "*.tms Dateien suchen..."
    16. Dim Files = root_dir.GetFiles("*.tms", SearchOption.AllDirectories)
    17. For Each File In Files
    18. Directories.add(File.DirectoryName)
    19. Next
    20. Dim query = (From str As String In Directories Select str).Distinct
    21. stalabel.Text = "Dateien einlesen..."
    22. staprogress.Value = 0.2 * staprogress.Maximum
    23. Dim prg_cou As Double = ((staprogress.Maximum - staprogress.Value) / query.Count) - 1
    24. For Each Str As String In query
    25. Dim temp As String = Str
    26. Dim result = (From p As FileInfo In Files Where p.DirectoryName = temp Order By p.Length Descending Select p Take 1).First
    27. If InStr(LCase(result.FullName), "sofa") Then
    28. Dim parts() As String = Split(result.FullName, "SOFA\")
    29. temp = "SoFa " & Mid(parts(1), 6, 6)
    30. End If
    31. Dim tms_temp = New tms_File(result.Name, result.FullName, result.Name, result.Length, result.CreationTime, temp)
    32. active_File = tms_temp
    33. For i As Integer = 0 To GroupCount(result.FullName) - 1
    34. Dim temp_group As group = read_Group(result.FullName, i)
    35. checkSPEED(temp_group)
    36. tms_temp.ADD_group(temp_group)
    37. Next
    38. All_Files.Add(tms_temp)
    39. tms_temp = Nothing
    40. staprogress.Value = staprogress.Value + prg_cou
    41. Next
    42. Cursor.Current = Cursors.Default
    43. stalabel.Name = "fertig!"
    44. staprogress.Visible = False
    45. create_tree()
    46. End If
    47. End Sub


    Gruß
    Bilder
    • StatusStrip.JPG

      42,48 kB, 902×631, 247 mal angesehen

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

    kannst du bei deim Post vlt. die Einrückungen im Code korrigieren? beachte VB-Tag richtig benutzen

    ausserdem wunderts mich, dass der Vorgang insgesamt nicht ratzfatz geht, also ich täte denken, ein paar dateinamen einzulesen ist zu schnell, als dass man da sinnvoll mit einer Progressbar rumfummeln könnte.
    Habs geändert ;)

    nein es handelt sich schon um ein paar dateien ... vorallem das suchen der dateien dauert etwas länger ...

    daher hätte ich gerne unten eine information stehen dass man sieht was das programm gerade macht und man nicht schon zum STRG-ALT-ENTF greift

    der vorgang dauert schon so 10 sec
    hmm ist das wirklich unumgänglich mit einem 2. thread ... weil die progressbar funktioniert doch ...

    wenn die jetzt auch nicht so funktionieren würde dann ja ... aber irgendwie denke ich dass ein fehler bei meiner ansteuerung ist ...

    aber ich schau mir das mit asynworker auch mal an
    Also wenns wirklich so ist, wie du schreibst, isses bisserl erstaunlich, dass die Progressbar funktioniert.

    Aber Progressbar ist in der Tat erstaunlich - die scheint sich anders zu zeichnen als alle anneren Controls.

    Aber dein gesamtes anneres Gui müsste dann doch auch eingefroren sein - also nix geht mehr, solange die Dateinamen eingelesen werden.

    Ich glaub auch immer noch nicht so recht an die 10Sekunden: wieviele Ordner werden denn da durchsucht?

    Evtl liegts auch an der tms_file-Geschichte, also hängt iwo hier drinne:

    VB.NET-Quellcode

    1. Dim tms_temp = New tms_File(result.Name, result.FullName, result.Name, result.Length, result.CreationTime, temp)
    keine Ahnung, was ein tms_file ist.

    Verdächtig auch

    VB.NET-Quellcode

    1. active_File = tms_temp
    Da kann ja 100mal in der Schleife das active_File geändert werden - was hat das fürn Sinn, und welche auswirkungen?

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

    ja da hast du schon recht ... das mit dem asynctast wäre vll die bessere lösung ...

    mit active_File=tms_file übergebe ich das aktuelle file einer Public Variablen um in einem anderen Form (geöffnet as Dialog) drauf zugreifen kann ... ich habs nicht anders hinbekommen mit showDialog( blabla) irgenwie vll ne variable zu übergeben