VB: If-Sequenz einmalig ausführen?

 - (Computer, Programmieren, Microsoft)

5 Antworten

(...) wird die ProgressBar zwar ausgelöst (...)

Was soll das bedeuten?

(...) wenn jedoch der Text wieder heraus gelöscht wird, löst sie erneut aus (...)

Inwiefern ist das schlimm? Deinem Code-Schnipsel zufolge prüfst du doch die Textlänge und machst nichts, wenn die Textlänge ungleich 1 ist.

Außerdem habe ich es noch nicht hinbekommen, dass die ProgressBar wieder zurückgesetzt wird, wenn der Text aus der Box wieder gelöscht wird.

Das ist ein grandioser Use Case für if-else if.

Erschwerend ist dabei, dass es mehrere TextBoxen gibt, für die das selbe Prinzip angewandt werden soll.

Tun sie alle exakt dasselbe - heißt, manipulieren sie alle die selbe ProgressBar? Wenn ja, ordne ihnen allen denselben Listener (txt_name_TextChanged) zu.

PS.: Der Übersichtlichkeit halber solltest du dich an die .NET-Konventionen bei der Code-Formatierung halten.

PPS.: Die Tags JavaScript und Visual C sind für diese Frage unpassend.

Ich kann kein Visual Basic (die Syntax ist evtl falsch), aber kann dir vielleicht trotzdem vom Prinzip helfen:

Private boolean textEntered = false;
-----------------------------------------------------------------
If txt_name.TextLength >= 1 && !textEntered Then
	textEntered = true;
	progress.Value = ...
Else
    textEntered = false;
End If

Nun wird die if nur einmal ausgelöst.

Die Variable kannst du auch gleich mitbenutzen, um festzustellen, ob etwas eingegeben wurde.

edit: Sorry, für das falsche Einrücken. Das liegt an GF, da es in meinem Editor, wo ich gerade nachbessern wollte, stimmt.

Woher ich das weiß:Hobby

Um den Status der Progressbar wieder auf 0 zu setzten schreibe einfach diesen Code

Edit// Ich habe das Bild getauscht weil das Bild davor den Sinn nicht erfüllte.

Das die Abfrage nur einmal ausgeführt wird.. joa da könntest du das machen

Wobei ich mir dabei nicht mal sicher bin gerade..

Ich werde nochmal schauen aber gebe dir erstmal das hier mit

Woher ich das weiß:Studium / Ausbildung – Ausbildung als Fachinformatiker für Anwendungsentwicklung
 - (Computer, Programmieren, Microsoft)  - (Computer, Programmieren, Microsoft)

Dann machst du einfach eine if else Verzweigung.

Bisschen Pseudocode

WENN(textbox.länge > 1) DANN ändereProgressBar ANSONSTEN setzeDieseZurück

Ansonsten wird ausgeführt, wenn die länge < 1 ist.

Hey,

das habe ich auch schon probiert. Jedoch wird dann die ProgressBar nicht nur einmalig ausgelöst, sondern bei jedem weiteren Zeichen, was > 1 ist. Wenn das Wort in der Textbox also 5 Zeichen lang ist, wird die ProgressBar 3 mal ausgelöst.

0

gaaaaaanz einfach:

progress.value = txt_name.TextLength * 10

die if abfrage löschst du einfach.

Was möchtest Du wissen?