Textbox prüfen

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Wenn in der Textbox auch "bla" stehen kann, musst Du zunächst testen, ob der Wert numerisch ist. Das bekommst Du allein raus. :thumbup:
    Dann musst Du den Text in eine Double-Variable überführen und testen:

    VB.NET-Quellcode

    1. Dim val As Double = Double.Parse(text)
    2. If (val >= MIN AndAlso val <= MAX) Then
    3. ' etwas tun
    4. End If
    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!

    RodFromGermany schrieb:

    Das bekommst Du allein raus.

    aber ob er gleich aufs performanteste kommt?
    Ich meine Double.TryParse ;)

    und jetzt nicht google suchen, sondern iwas mit Double.TryParse() in den editor schreiben, den Cursor auf TryParse setzen und F1 drücken - das sollte die kontextsensitive OnlineHilfe herbeizaubern.
    Fang bitte noch mal von vorn an.
    Zuerst TextBox1.Text in einen numerischen Wert konvertieren, siehe oben (von ErfinderDesRades und mir)
    Dann den numerischen Wert testen.
    Frage:
    Wie sieht denn Dein val aus, wenn in der TextBox "bla" drin steht?
    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!
    Mit dieser IF-Abfrage prüfst du, ob in der textbox1 das Wort "bla" enthalten ist und ob der Wert über 0 und unter 4 liegt.
    Mit der zweiten Bedingung können wir schonmal was anfangen, doch zuerst müssen wir prüfen, ob der eingegebene Wert numerisch ist:
    Hierfür gibt es die
    IsNumeric-Abfrage.
    Danach können wir erst mit einer IF-Abfrage prüfen, ob der Wert zwischen 1 und 4 liegt! ;)
    Verstanden?
    Dann hier:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. If Not IsNumeric(TextBox1.Text) Then
    2. MsgBox("Bitte nur Zahlen eingeben!")
    3. Else
    4. Dim val As Double = Double.Parse(TextBox1.Text)
    5. If val >= 0 AndAlso val <= 4 Then
    6. MsgBox("Der eingegebene Wert liegt zwischen 1 und 4!")
    7. Else
    8. 'Der Wert liegt nicht zwischen 1 und 4
    9. End If
    10. End If

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Max1001“ ()

    Danke für eure Hilfe RodFromGermany und Max1001
    aber ich möchte bzw. muss das so haben.


    Geht das absolut nicht wie ich das moechte ?
    Mir ist es auch egal ob es wirklich Zahlen sind.


    es sollte wirklich so in der Art funktionieren


    VB.NET-Quellcode

    1. If Form1.textbox1.Text.Contains("TEXT" & PRÜFEN OB ZAHL ZWISCHEN 0 UND 4 ) Then




    nehmt mir das bitte nicht übel ^^
    Dir wurde die Antwort doch bereits gegeben du musst sie nurnoch genau auf deine Bedürfnisse anpassen. Also die abfrage ob in TB1 der "TEXT" drinsteht um die gegebene Abfrage herum machen. z.B.

    VB.NET-Quellcode

    1. If TB1.text.contains("TEXT") Then
    2. '"GEGEBENE ABFRAGE"
    3. End If
    & ist eine String-Verknüpfung
    ""TEXT" & PRÜFEN OB ZAHL ZWISCHEN 0 UND 4" ergibt also entweder "TextTrue" oder "TextFalse"

    Das können wir uns nicht vorstellen, dass textbox1.Contains("TextTrue") oder textbox1.Contains("TextFalse") wirklich die von dir gewünschte Bedingung ist.

    Sinnvoll erscheint

    VB.NET-Quellcode

    1. If Form1.textbox1.Text.Contains("TEXT") AndAlso PRÜFEN OB ZAHL ZWISCHEN 0 UND 4 ) Then
    Jetzt komm ich ganz durcheinander ^^

    Also ich versuch es mal so:

    Ich habe eine Textbox - multiline

    Das steht dann z.B. in der Textbox:

    Text_A "1002452"
    Text_B "4"

    Text_C "0.55555"


    dann prüfe ich z.B. ob Text_A vorhanden ist

    VB.NET-Quellcode

    1. If Not Form1.Textbox1.Text.Contains("Text_A") Then
    2. Else
    3. If Form1.Textbox1.Text.Contains("Text_A") Then
    4. If Not Form1.Textbox1.Text.Contains("Text_A") & Chr(34) & PRÜFEN OB ZAHL ZWISCHEN 0 UND 4 ) & Chr(34) Then
    5. Else
    6. If Form1.Textbox1.Text.Contains("Text_A") & Chr(34) & PRÜFEN OB ZAHL ZWISCHEN 0 UND 4 ) & Chr(34) Then
    7. End If
    8. End If
    9. End If
    10. End If



    Ich hoffe man versteht was ich meine :S
    Naaaja, so ungefähr.
    Beschäftige dich mal mit der Textbox-Klasse. Die verfügt z.B. über eine Eigenschaft ...Lines. Da bekommst du ein Stringarray in dem jedes Feld 1 Zeile wiederspiegelt.
    Diese Zeilen kannst du nach deinem Text durchsuchen und diesen dann entfernen.
    Dann sollte ja die Zahl (aber immer noch String) überbleiben (oder was sollen die ""?, Die müssen dann auch weg). Diese Zahl mußt du mit Double.Tryparse in eine richtige Zahl vom Typ Double umwandeln und kannst die dann vergleichen, ob sie >=0 Andalso <=4 ist.

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Ups schrieb:

    Text_A "1002452"
    Text_B "4"
    Text_C "0.55555"
    Wenn das Dein Text ist, musst Du zunächst ein wenig Textveratbeitung machen.
    Mit Vatter holst Du Dir die einzelnen Zeilen, mit

    VB.NET-Quellcode

    1. I1 = Text.IndexOf(""""c)
    2. I2 = Text.IndexOf(""""c, I1 + 1)
    3. Text = Text.SubString(I1, I2 - I1) ' hier mal genau nachsehen, ob die Indizes stimmen
    4. dbl = 0
    5. Double.TryParse(Text, dbl)
    holst Du Dir die einzelnen Werte.
    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!
    Ich muss also den Text löschen um an die Zahl zu kommen ?
    Aber warum kann man die Zahlen, die zwischen Anführungszeichen stehen nicht auch erkennen ?

    Würde ich den Wert zwischen den Anführungszeichen festlegen

    VB.NET-Quellcode

    1. If Form1.Textbox1.Text.Contains("Text_A") & Chr(34) & "400" & Chr(34) Then



    erkennt er es doch auch. :(
    Mißverständnis!
    Du entfernst nicht den Text aus deiner Textbox, diese dient doch nur der Anzeige.
    Du formst den nach deinem Text gesuchten String (Zeile) aus dem ARRAY so um, dass die Zahl als vergleichbare Größe überbleibt. Strings kannst du mit <> nicht wirklich vergleichen, da dann alphabetisch sortiert wird. Dann ist z.B. 2 > 10.
    Außerdem zum xten mal: & ist Stringverknüpfung. Zum Verketten mehrerer Boolscher Wahr- und Unwahrheiten dient And oder besser Andalso.
    Deine If-Anweisung macht keinen Sinn...
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Und:
    Was willst Du machen, wenn neben "Text_A" auch "Text_B", "Text_C", "Text_D", "Text_E", "Text_F" usw.
    sowie "401", "402", "1234" usw. enthalten ist?
    Willst Du dann jede der vorhergesehenen Möglichkeiten einzeln programmieren?
    Was ist mit den dann nicht vorhergesehenen Möglichkeiten?
    Löse Dein Problem allgemein, da kommst Du viel weiter.
    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!
    Also bei mir funktioniert diese If-Anweisung ohne Probleme

    VB.NET-Quellcode

    1. If Form1.Textbox1.Text.Contains("Text_A" & Chr(34) & "400" & Chr(34)) Then

    Wenn ich das mit and mache sucht er doch in der ganzen Textbox nach dem Wert "400" und nicht direkt hinter dem Text.

    Vielen Dank für euer Bemühen mir zu helfen aber ich verstehe es nicht, vielleicht will ich es auch nicht verstehen, ich weiß es nicht. ^^
    Was willst Du machen, wenn neben "Text_A" auch "Text_B", "Text_C", "Text_D", "Text_E", "Text_F" usw. sowie "401", "402", "1234" usw. enthalten ist?
    Wird nicht vorkommen.

    Ups schrieb:

    Wird nicht vorkommen.
    Wenn es jedoch vorkommt, und bei mir kommt soetwas immer vor, plagst Du das Forum mit unqualifizierten Fragen. :thumbdown:
    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!

    VB.NET-Quellcode

    1. If (val >= MIN AndAlso val <= MAX) Then
    2. ' etwas machen
    3. End If
    4. If (EINE_ANDERE_BEDINGUNG = True) AndAlso (val >= MIN AndAlso val <= MAX) Then
    5. ' etwas machen
    6. End If
    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!