While Schleife (nix machen)

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Unwesen.

    While Schleife (nix machen)

    Hi
    Ich habe ein Problehm und zwar habe ich eine while schleife die eine textbox nach einem bestimmten ssatz durchsucht.
    und zwar hab ich jetzt das problehm das die while schleife Nix tun soll sie soll nur warten bis bedingung erfüllt ist....
    wie mach ich das das die while schleife nix macht?

    Lg RazerElite
    do until fertig
    threading.thread.sleep(1)
    application.doevents'damits nicht hängen bleibt
    loop

    ich würde dir aber empfehlen das ganze in einem thread oder noch einfacher backgroundworker auszulagern. der backgroundworker durchscuht also den text und schmeißt das complete-event wenn er fertig ist.
    hm ok...

    hab das jetzt so versucht..
    1. mit dem code läuft es weiter bleibt auch nicht hängen... aber die textbox aus dem die while schleife ihr bedingung sucht blingt und ruckt jetzt rum.
    2. da ich mich nicht so mit backgroundworker auskenne habe ich mal gegoogelt aber so wie es da beschrieben wurde geht es nicht...
    frage gibts es eine andere möglichkeit? oder mach ich was falsch?

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

    RazerElite schrieb:

    ok danke für die schnelle antwort ich werds mal versuchen!

    Lieber nicht, das ist in diesem Fall ziemlich üble Programmierung.

    Intreressanter wäre es zu erfahren worauf die Schleife warten soll: wenn es auf Eingaben in der Textbox warten soll, so prüfe lieber ohne Schleife in dem TextChanged Event der Textbox.
    Du möchtest, das etwas bestimmtes passiert wenn etwas bestimmtes in einer Textbox steht ?
    Dann würde ich dir von Backgroundworker/Thread oder While Schleife völlig abraten.

    Eine Textbox hat ein "TextChangedEvent".
    In diesem kannst du prüfen, was in der Textbox steht.

    Gruss Mono

    //EDIT

    Kangaroo ist aber auch schnell.... xD
    Das ist meine Signatur und sie wird wunderbar sein!

    Mono schrieb:

    Du möchtest, das etwas bestimmtes passiert wenn etwas bestimmtes in einer Textbox steht ?
    Dann würde ich dir von Backgroundworker/Thread oder While Schleife völlig abraten.

    Eine Textbox hat ein "TextChangedEvent".
    In diesem kannst du prüfen, was in der Textbox steht.

    Gruss Mono

    //EDIT

    Kangaroo ist aber auch schnell.... xD
    nein in der textbox steht immer etwas drin... und ich will nur aus der textbox ein bestimmten satz suchen... wenn dieser vorhanden ist soll das programm weiter machen. und ich habe es deswegen mit ner while schleife gemacht damit sich das programm direkt aktualisiert / ändert ( wenn der gesuchte satz vorhanden ist).
    Das TextChanged Event der Textbox wird aufgerufen wenn sich irgendetwas in der Textbox geändert hat. Nur dann macht es auch Sinn deine Prüfung vorzunehmen, eine While-Schleife mit dem üblen Application.DoEvents macht also keinen Sinn und treibt nur Deine CPU ins Schwitzen.

    RazerElite schrieb:

    ich weis was subs und events sind aber ich weis nicht wie ich in einen sub springe mit dem code....

    Nun ganz einfach: Du rufst Deine Sub / Funktion aus dem TextChanged Event heraus mit dfem Namen der Funktion auf. Thats it ...

    Dir müsste eigentlich aufgefallen sein, dass alles in Deiner Anwendung in einem Event passiert ( Form.Load, Button.Click,...)

    Und das Wort Goto erwähne hier im Forum lieber nicht: Samus ist ein alter Mann und soviel Aufregung kann seiner Gesundheit schaden :rolleyes:

    Kangaroo schrieb:

    Nun ganz einfach: Du rufst Deine Sub / Funktion aus dem TextChanged Event heraus mit dfem Namen der Funktion auf. Thats it ...
    hab das so versucht aber iwie macht der da nicht weiter... hab das in das event von der textbox geschrieben ... dann solte er doch eigentlich an dem sub weitermachen wo ich ihm gesagt hab bei mir heist der sub: Private Sub NummerExtrahieren()
    Der TE drückt sich nur unzureichend aus, da er seinen Code nicht versteht.

    Situation: Eine Datenquelle wird mittels eines festen Timer Intervals aktualisiert und geprüft, ob ein bestimmter Text enthalten ist. TE hätte nun gerne, das das Programm etwas tut, wenn ein entsprechender anderer Text enthalten ist. Schlimmer noch, er hätte gerne, das das Programm etwas NICHT tut, wenn ein bestimmter Text enthalten ist.

    If Then Else Endif#

    Im Moment ist die folgende Struktur gegeben. (Vereinfacht ausgedrückt.

    VB.NET-Quellcode

    1. If txtSoundso.Text.Startswith("gesuchterText") then
    2. 'code
    3. Endif

    Die Lösung zu seinem Problem wäre einfach, wenn er versteht, dass, wenn diese Bedingung NICHT zutrifft, es im gegebenen Fall automatisch bedeutet, das eine andere Bedingung zutrifft.

    VB.NET-Quellcode

    1. If txtSoundso.Text.Startswith("gesuchterText") then
    2. 'code
    3. else
    4. 'anderer Code. In seinem Fall ein simples:
    5. Return
    6. Endif


    Woher ich das weiß? Fragt nicht, ich weiß es einfach.
    :pinch: