Frage von Wittas, 37

Wie löse ich dieses Problem bei Visual Basics?

Hallo,

ich habe folgendes Problem:

Ich habe eine Textbox in der der User einen Wert eingeben soll. Gibt der User keinen Wert an schließt sich das Programm bzw. er gibt eine Fehlermeldung an da er keinen Wert hat, eben auch keine null! Ich möchte es so Programmieren dass das Programm beim drücken des Start-Buttons NICHT startet und ich dann ein Label erscheinen lassen dass den User auf den Fehler hinweißt.

Vielen lieben dank schonmal für hilfreiche Antworten!

Antwort
von CrystalixXx, 15

Du kannst die Text-Eigenschaft der TextBox abfragen und auf deine Kriterien prüfen. Ich nutze für solche Zwecke immer:

If String.IsNullOrEmpty(TextBox1.Text) Then
' Code
End If

Das hat den Vorteil, dass damit zwei Zustände abgefragt werden, nämlich ob der Text ein Nullverweis (also Nothing) ist oder eine leere Zeichenfolge. Letzteres ist typischerweise der Fall, wenn kein Text in der TextBox eingegeben wurde.

Wenn der eingegebene Text eine Zahl sein soll, dann kannst du den Text in eine Zahl konvertieren:

Dim result As Integer
If Integer.TryParse(TextBox1.Text, result) Then
' Text erfolgreich in Integer konvertiert
' Ergebnis der Konvertierung steht in "result"
Else
' Keine Zahl eingegeben
End If

TryParse löst keine Ausnahme aus, wenn die Konvertierung fehlschlägt, gibt aber dann False zurück.

Kommentar von Wittas ,

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

 
Dim result As Integer

Timer1.Enabled = True 'Timer wird bennötigt damit immer neu Berechnet wird

Form2.Show()
Form3.Show()

If Integer.TryParse(TextBox1.Text, result) Then

result = 30
result = TextBox1.Text
result = result * Math.PI / 180

Else

phi = TextBox1.Text
phi = phi * Math.PI / 180

End If

End Sub

Kommentar von Wittas ,

ich habe viel ausprobiert aber komme nicht so richtig vorwärts. so sieht der aktuelle "unfall" aus 

Kommentar von CrystalixXx ,

TryParse führt bereits die Konvertierung durch. War die Konvertierung erfolgreich, dann steht in der Variable "result" der Wert aus TextBox1.Text.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Timer1.Enabled = True

Dim frm1 As New Form2
Dim frm2 As New Form3
frm1.Show()
frm2.Show()

Dim result As Integer
Dim calculated As Double

If Integer.TryParse(TextBox1.Text, result) Then
' Die Konvertierung war erfolgreich und 'result'
' enthält den Text von TextBox1 als ganze Zahl.
calculated = result * MathPI / 180
End If
End Sub

Das wäre dein Code in angepasster Form.

Fang am besten auch damit an diese Default-Instanzen von Formularen zu vergessen und nutze selbst erstellte Instanzen davon (New Form2 etc.).

Nur aus Neugier: was macht der Timer1? Der berechnet doch hoffentlich nicht ständig einen Wert, basierend auf den Eingaben?

Antwort
von SirSchinken, 27

Dann prüf entweder auf die länge des TextBox inhalts (length) oder eben wenn du nur prüfen willst ob wirklich garnichts drinne steht ob der Wert Nothing ist.

Kommentar von Wittas ,

also kann ich schreiben 

if x = nothing then 

?

Kommentar von SirSchinken ,

Ja, nur das x eben in diesem Falle der Text der TextBox wäre, so prüfst du ob garnichts eingegeben wurde/ob das Textfeld leer ist.

Kommentar von maximilianus7 ,

fast:

if x is nothing then

Kommentar von CrystalixXx ,

Die Text-Eigenschaft der TextBox ist nicht Nothing, wenn nichts eingegeben wurde, sondern ein String.Empty-Objekt.

Keine passende Antwort gefunden?

Fragen Sie die Community