Search code examples
vb.nettextbox

Loop through empty textbox until the textbox has data


I'm sure there's a simple solution on this, but it escapes me. I have a form with three text boxes on it. Before the main code is run I want to make sure each text box has data in it. I've initialized "hasData" to be the variable that will decide if the code can move on or not. I evaluate hasData in a Do While loop but the code discovers there are text boxes without data and set hasData variable to "False". But then I'm in a continuous loop, the message box never goes away to allow you to enter text into the empty text boxes.

Thank you for your help.

    Dim hasData As String

    hasData = "False"

    Do While hasData = "False"
        If txtTechManName.Text.Trim = "" Or txtDirectory.Text.Trim = "" Or txtBxUnique.Text.Trim = "" Then
            btnExecute.Enabled = False
            hasData = "False"
            MsgBox(" Please fill all text boxes on form ")
            ' this resulted in an endless loop of the msgBox. It didn't let me add text to the empty fields
        Else
            btnExecute.Enabled = True
            hasData = "True"
        End If
    Loop

    If (hasData = "True") Then
        searchDir = txtDirectory.Text
        Prefix = txtBxUnique.Text
        Dim manualName = txtTechManName.Text

Solution

  • I moved my evaluating condition to the execute buttons on click event. There I run an if statement and when hasData is true run the function with the rest of the code.

        Private Sub btnExecute_Click(sender As Object, e As EventArgs) Handles btnExecute.Click
        Dim hasData As Boolean = False
        If txtTechManName.Text.Trim = "" Or txtDirectory.Text.Trim = "" Or txtBxUnique.Text.Trim = "" Then
            hasData = False
            MsgBox(" Please fill all text boxes on form ")
    
            If txtTechManName.Text.Trim = "" Then
                txtTechManName.Focus()
            ElseIf txtDirectory.Text.Trim = "" Then
                txtDirectory.Focus()
            ElseIf txtBxUnique.Text.Trim = "" Then
                txtBxUnique.Focus()
            End If
        Else
            hasData = True
            runProgram()
        End If
    End Sub