Label startet erst nach Progress bar?!

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    Label startet erst nach Progress bar?!

    Hey, nachdem ich hier gestern breits Hilfe fand, muss ich euch noch einmal um solche bittten. Und zwar lass ich, wie im angehangenen Code zu sehen, die GroupBox1 (GB1) sichtbar werden. In dieser befinden sich sowohl Progress bar als auch Label. Nur irgendwie zeigt er zwar die Progress bar alleine, aber weder die Groupbox noch das Label an. Diese erscheinen erst mit Abschluss des Vorganges bzw sobald die MSGBox angezeigt wird. Dabei lasse ich die GB1 doch direkt als erstes sichtbar werden? Bzw falls sich jemand fragt was das werden soll, wollte mich da mal etwas reinarbeiten und zum Anfang erst einmal nen kleinen En- bzw Decrypter meiner als Kind genutzten "Geheimsprache" machen :D

    Quellcode

    1. GB1.Visible = True
    2. Button2.Visible = False
    3. decrypt.Visible = True
    4. Cb1.Checked = False
    5. TextBox1.Text = TextBox1.Text.Replace("^^", "324")
    6. TextBox1.Text = TextBox1.Text.Replace("!", "*391")
    7. TextBox1.Text = TextBox1.Text.Replace(" ", "*31")
    8. TextBox1.Text = TextBox1.Text.Replace("1", "*3")
    9. ProgressBar1.Value = 5
    10. TextBox1.Text = TextBox1.Text.Replace("2", "7")
    11. TextBox1.Text = TextBox1.Text.Replace("3", "*81")
    12. TextBox1.Text = TextBox1.Text.Replace("4", "**5")
    13. TextBox1.Text = TextBox1.Text.Replace("5", "*732")
    14. TextBox1.Text = TextBox1.Text.Replace("6", "*32*754")
    15. ProgressBar1.Value = 10
    16. TextBox1.Text = TextBox1.Text.Replace("7", "*32")
    17. TextBox1.Text = TextBox1.Text.Replace("8", "5")
    18. TextBox1.Text = TextBox1.Text.Replace("9", "6")
    19. TextBox1.Text = TextBox1.Text.Replace("0", "7")
    20. TextBox1.Text = TextBox1.Text.Replace("ß", "8")
    21. ProgressBar1.Value = 15
    22. TextBox1.Text = TextBox1.Text.Replace("´", "9")
    23. TextBox1.Text = TextBox1.Text.Replace("q", "0")
    24. TextBox1.Text = TextBox1.Text.Replace("w", "ß")
    25. TextBox1.Text = TextBox1.Text.Replace("e", "´")
    26. TextBox1.Text = TextBox1.Text.Replace("r", "€")
    27. ProgressBar1.Value = 20
    28. TextBox1.Text = TextBox1.Text.Replace("t", "Q")
    29. TextBox1.Text = TextBox1.Text.Replace("z", "e")
    30. TextBox1.Text = TextBox1.Text.Replace("u", "R")
    31. TextBox1.Text = TextBox1.Text.Replace("i", "T")
    32. ProgressBar1.Value = 25
    33. TextBox1.Text = TextBox1.Text.Replace("o", "z")
    34. TextBox1.Text = TextBox1.Text.Replace("p", "U")
    35. TextBox1.Text = TextBox1.Text.Replace("ü", "I")
    36. TextBox1.Text = TextBox1.Text.Replace("+", "O")
    37. ProgressBar1.Value = 30
    38. TextBox1.Text = TextBox1.Text.Replace("a", "p")
    39. TextBox1.Text = TextBox1.Text.Replace("s", "ü")
    40. TextBox1.Text = TextBox1.Text.Replace("d", "+")
    41. TextBox1.Text = TextBox1.Text.Replace("f", "A")
    42. ProgressBar1.Value = 35
    43. TextBox1.Text = TextBox1.Text.Replace("g", "s")
    44. TextBox1.Text = TextBox1.Text.Replace("h", "D")
    45. TextBox1.Text = TextBox1.Text.Replace("j", "F")
    46. TextBox1.Text = TextBox1.Text.Replace("k", "g")
    47. TextBox1.Text = TextBox1.Text.Replace("l", "H")
    48. ProgressBar1.Value = 40
    49. TextBox1.Text = TextBox1.Text.Replace("ö", "J")
    50. TextBox1.Text = TextBox1.Text.Replace("ä", "k")
    51. TextBox1.Text = TextBox1.Text.Replace("#", "l")
    52. TextBox1.Text = TextBox1.Text.Replace("<", "ö")
    53. ProgressBar1.Value = 45
    54. TextBox1.Text = TextBox1.Text.Replace("y", "ä")
    55. TextBox1.Text = TextBox1.Text.Replace("x", "#")
    56. TextBox1.Text = TextBox1.Text.Replace("c", "<")
    57. TextBox1.Text = TextBox1.Text.Replace("v", "Y")
    58. TextBox1.Text = TextBox1.Text.Replace("b", "x")
    59. ProgressBar1.Value = 50
    60. TextBox1.Text = TextBox1.Text.Replace("n", "C")
    61. TextBox1.Text = TextBox1.Text.Replace("m", "v")
    62. TextBox1.Text = TextBox1.Text.Replace(";", "B")
    63. TextBox1.Text = TextBox1.Text.Replace(".", "N")
    64. ProgressBar1.Value = 55
    65. TextBox1.Text = TextBox1.Text.Replace("-", "M")
    66. TextBox1.Text = TextBox1.Text.Replace("°", "€")
    67. TextBox1.Text = TextBox1.Text.Replace("§", "q")
    68. TextBox1.Text = TextBox1.Text.Replace("$", "E")
    69. TextBox1.Text = TextBox1.Text.Replace("%", "r")
    70. ProgressBar1.Value = 60
    71. TextBox1.Text = TextBox1.Text.Replace("&", "t")
    72. TextBox1.Text = TextBox1.Text.Replace("/", "Z")
    73. TextBox1.Text = TextBox1.Text.Replace("(", "u")
    74. TextBox1.Text = TextBox1.Text.Replace(")", "i")
    75. ProgressBar1.Value = 65
    76. TextBox1.Text = TextBox1.Text.Replace("=", "o")
    77. TextBox1.Text = TextBox1.Text.Replace("?", "P")
    78. TextBox1.Text = TextBox1.Text.Replace("Q", "Ü")
    79. TextBox1.Text = TextBox1.Text.Replace("W", "*")
    80. TextBox1.Text = TextBox1.Text.Replace("E", "a")
    81. ProgressBar1.Value = 70
    82. TextBox1.Text = TextBox1.Text.Replace("R", "S")
    83. TextBox1.Text = TextBox1.Text.Replace("T", "d")
    84. TextBox1.Text = TextBox1.Text.Replace("Z", "f")
    85. TextBox1.Text = TextBox1.Text.Replace("U", "G")
    86. ProgressBar1.Value = 75
    87. TextBox1.Text = TextBox1.Text.Replace("I", "H")
    88. TextBox1.Text = TextBox1.Text.Replace("O", "j")
    89. TextBox1.Text = TextBox1.Text.Replace("P", "K")
    90. TextBox1.Text = TextBox1.Text.Replace("Ü", "L")
    91. TextBox1.Text = TextBox1.Text.Replace("*", "Ö")
    92. ProgressBar1.Value = 80
    93. TextBox1.Text = TextBox1.Text.Replace("A", "Ä")
    94. TextBox1.Text = TextBox1.Text.Replace("S", ">")
    95. TextBox1.Text = TextBox1.Text.Replace("D", "Y")
    96. TextBox1.Text = TextBox1.Text.Replace("F", "X")
    97. TextBox1.Text = TextBox1.Text.Replace("G", "C")
    98. ProgressBar1.Value = 85
    99. TextBox1.Text = TextBox1.Text.Replace("H", "V")
    100. TextBox1.Text = TextBox1.Text.Replace("J", "b")
    101. TextBox1.Text = TextBox1.Text.Replace("K", "n")
    102. TextBox1.Text = TextBox1.Text.Replace("L", "m")
    103. TextBox1.Text = TextBox1.Text.Replace("Ö", "§")
    104. ProgressBar1.Value = 90
    105. TextBox1.Text = TextBox1.Text.Replace("Ä", "$")
    106. TextBox1.Text = TextBox1.Text.Replace("'", "%")
    107. TextBox1.Text = TextBox1.Text.Replace("<", "&")
    108. TextBox1.Text = TextBox1.Text.Replace("Y", "/")
    109. TextBox1.Text = TextBox1.Text.Replace("X", "(")
    110. ProgressBar1.Value = 95
    111. TextBox1.Text = TextBox1.Text.Replace("C", ")")
    112. TextBox1.Text = TextBox1.Text.Replace("V", "=")
    113. TextBox1.Text = TextBox1.Text.Replace("B", "_")
    114. TextBox1.Text = TextBox1.Text.Replace("N", ":")
    115. TextBox1.Text = TextBox1.Text.Replace("M", ";")
    116. ProgressBar1.Value = 100
    117. If ProgressBar1.Value = 100 Then
    118. MsgBox("Encoding complete!")
    119. ProgressBar1.Value = 0
    120. GB1.Visible = False
    121. End If
    zum einen täte ich erwarten, dass der vorgang schneller fertig ist, als jemand gucken kann.

    Wie lang ist denn der Text, und wie lang dauert dann der Vorgang.

    Dann isses allgemein so: Solange der Code iwas tut, kann sich kein Control verändern, denn der Prozessor ist mit deim Code beschäftigt.

    Abhilfe könnte hier Threading schaffen, aber das wäre ein idiotischer Aufwandt.

    Du kannst die Geschichte entweder mit Regex oder mittm StringBuilder enorm beschleunigen, dasses garantiert schneller ist als jmd. gucken kann.

    VB.NET-Quellcode

    1. TextBox1.Text = TextBox1.Text.Replace(" ", "*31")
    2. TextBox1.Text = TextBox1.Text.Replace("1", "*3")

    Das geht ja schon mal irgendwie in die Hose ...

    Hinterher kommt dann noch:

    VB.NET-Quellcode

    1. TextBox1.Text = TextBox1.Text.Replace("3", "*81")


    dh ein Leerzeichen kodiert mit diesen Befehlen zu:
    *31 -> *3*3 -> **81**81

    Da würde ich jetzt gerne mal die Funktion sehen die das rückübersetzt.


    Auch sehr schön:

    VB.NET-Quellcode

    1. ProgressBar1.Value = 100
    2. If ProgressBar1.Value = 100 Then

    Setze PB auf 100 und prüfe direkt danach, ob sie 100 ist ... ???

    RE: Label startet erst nach Progress bar?!

    ErfinderDesRades schrieb:

    zum einen täte ich erwarten, dass der vorgang schneller fertig ist, als jemand gucken kann.

    Wie lang ist denn der Text, und wie lang dauert dann der Vorgang.

    Dann isses allgemein so: Solange der Code iwas tut, kann sich kein Control verändern, denn der Prozessor ist mit deim Code beschäftigt.

    Abhilfe könnte hier Threading schaffen, aber das wäre ein idiotischer Aufwandt.

    Du kannst die Geschichte entweder mit Regex oder mittm StringBuilder enorm beschleunigen, dasses garantiert schneller ist als jmd. gucken kann.

    Kommt darauf an, kleinere texte werden innerhalb von Bruchteilen übersetzt. Aber längere brauchen schon um die 10-12 Sekunden, da fällts dann schon auf ;)

    TextBox1.Text = TextBox1.Text.Replace(" ", "*31")


    Da würde ich jetzt gerne mal die Funktion sehen die das rückübersetzt.

    Das übersetzen bzw zurück übersetzen ist kein Problem, habe ich bereits getestet :P Bringt mich aber nicht weiter bei meinem Problem ;)


    versuchs mal hiermit...

    VB.NET-Quellcode

    1. GB1.Visible = True
    2. me.refresh()




    Ich danke dir, das war des Rätsels Lösung =)

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

    DaMovie schrieb:

    Das übersetzen bzw zurück übersetzen ist kein Problem, habe ich bereits getestet

    und ich habe bewiesen, dass es nicht geht ...

    btw:
    Kodiere mal "ü". Kodiere mal "I" und kodiere mal "H". Was sind die drei Ergebnisse?

    Aber längere brauchen schon um die 10-12 Sekunden

    Woran DAS wohl liegt ...

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

    picoflop schrieb:

    DaMovie schrieb:

    Das übersetzen bzw zurück übersetzen ist kein Problem, habe ich bereits getestet

    und ich habe bewiesen, dass es nicht geht ...

    Aber längere brauchen schon um die 10-12 Sekunden

    Woran DAS wohl liegt ...

    Hast du nicht bewiesen, ich habe es schliesslich mit meinen Augen gesehen :P
    Übrigens scheinst du wohl keine sinvollen Posts schreiben zu können, auf meine Frage bist du nie wirklich eingegangen *g*, von dem her werde ich deine Postings in Zukunft ignorieren.
    Egal ob es Funktioniert oder nicht, es ist eine derart schlechte Methode, dass es mich schon in den Fingern juckt diesen Thread löschen zu wollen.

    Eine Möglichkeit die einigermaßen Annehmbar wäre, wäre es über ein Array zu lösen, aber nicht so mit den Replacen.

    VB.NET-Quellcode

    1. Dim Normal As String() = {"A","B","C","D"} 'weiter fortführen
    2. Dim Codiert As String() = {"F", "H", "K", "O"} ' weiter führen
    3. For i As Integer = 0 To Normal.Length - 1
    4. TextBox1.Text = TextBox1.Text.Replace(Normal(i), Codiert(i))
    5. Next


    Das wäre eine kürzere und ein klein wenig bessere Methode. Mit einem StringBuilder wirds noch besser und es kommt nicht zu dem von picoflop angesprochen Problem.
    Hi
    picoflop hat wenigstens was drauf, da könnten sich so manche Leute eine Scheibe davon abschneiden. Aber es ist immer gut, qualifizierte Antworten zu ignorieren. Ich meine, wenn meine Codes nicht funktionieren und ich das von jemandem gesagt bekomme, stelle ich mich auch taub, weil für mich funktionierts ja...
    Ansonsten könntest du auch über eine Schleife vorgehen und durch alle Buchstaben im Eingabestring iterieren und sie entsprechend ersetzen und die ersetzten Buchstaben an einen im System.Text.StringBuilder bearbeiteten String dranhängen. Gibt es einen mathematischen Zusammenhang zwischen den einzelnen Ersetzungen?

    Gruß
    ~blaze~
    Das Problem, picos Antworten sind oftmal überqualifiziert für den Fragestellenden, bei ihm kommt dann nur sowas an

    餵?正在發生的事情在那裡所有的

    Ich frage mich ob die Fragenden Lernen wollen, oder lieber ihren durch Copy & Paste zusammen gestückten Code einfach nur von uns verbessert haben wollen. Den Lerneffekt sieht man leider viel zu wenig. Ich für meinen Teil bin sehr froh wenn ich eine Antwort bekomme die mir hilft mein Vorhaben effektiver zu gestalten und da hat auch Picoflop schon einige gute Antworten gegeben und ICH habe dadurch was gelernt.
    Wenn ich etwas nicht verstehe, was mit meiner Problemstellung zu tun hat, versuche ich, das, was ich nicht kann, zu lernen. Da gibts hunderte Möglichkeiten, wie Wikipedia, MSDN und Bing (oder Google :P). Notfalls kann man auch hier im Forum fragen.
    Sorry für OT, muss aber einfach sein und gehört eigentlich auch mehr oder weniger zum Thema...

    Gruß
    ~blaze~
    Wenn das ganze schon etwas performant sein soll. würde ich nicht jedes Replace auf Textbox1.Text anwenden, sondern eine separate Stringvariable verwenden.
    Dazu @Dodos Lösung aus Post 11 und gut ist:

    VB.NET-Quellcode

    1. Dim Normal As String() = {"A","B","C","D"} 'weiter fortführen
    2. Dim Codiert As String() = {"F", "H", "K", "O"} ' weiter führen
    3. Dim txt As String = TextBox1.Text
    4. For i As Integer = 0 To Normal.Length - 1
    5. txt = txt.Replace(Normal(i), Codiert(i))
    6. Next
    7. TextBox1.Text = txt
    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!