Vb.net 根据文本框的输入检查将焦点放在文本框上

Vb.net 根据文本框的输入检查将焦点放在文本框上,vb.net,textbox,messagebox,buttonclick,Vb.net,Textbox,Messagebox,Buttonclick,我希望我的程序检查文本框中的输入是否满足特定条件。如果不满足目标条件,光标应重新聚焦到该特定文本框上 我的代码: Private Sub ButtonSubmit_Click(sender As Object, e As EventArgs) Handles ButtonSubmit.Click EnterVotes.LabelCan1.Text = CandName1.Text EnterVotes.Labelcan2.Text = CandName2.Text Ent

我希望我的程序检查文本框中的输入是否满足特定条件。如果不满足目标条件,光标应重新聚焦到该特定文本框上

我的代码:

Private Sub ButtonSubmit_Click(sender As Object, e As EventArgs) Handles ButtonSubmit.Click
    EnterVotes.LabelCan1.Text = CandName1.Text
    EnterVotes.Labelcan2.Text = CandName2.Text
    EnterVotes.LabelCan3.Text = CandName3.Text
    EnterVotes.LabelCan4.Text = CandName4.Text
    EnterVotes.LabelCan5.Text = CandName5.Text

    If CandName1.Text = "" Then
        MessageBox.Show("Please enter a name in Candidate 1")

    End If

    loading.Show()
    Me.Hide()
如果CandName1.Text=则//在此处显示消息//CandName1.focus///返回该文本框,否则//显示消息 消息在此结束,如果


使用方法focus返回并重新写入该文本框

实际上非常简单

只需检查文本的值是否大于1 然后把焦点放在文本框上

这里有一个例子

if txtbox.text.value < 1 then
messagebox.show("You must enter data for textbox")
txtbox.focus()
end if

然后,为您正在使用的每个文本框使用continue方法,

可以使用一些linq来输入您的姓名

Dim Candidate() As TextBox
Candidate = Me.Controls.OfType(Of TextBox)().Where(Function(c) c.Name.Contains("CandName")).ToArray()

Dim i As Integer = 0

While i < Candidate.Count
    If(Candidate(i).text.value < 1)
       MessageBox.Show("Please enter a name in Candidate " & (i + 1).ToString())
       Candidate(i).Focus()
       Exit While
    End If  
    i += 1
    End While
这样你可以一次检查所有的候选人。这是未经测试的代码,但我认为它应该可以工作


你可以随意使用和编辑它,在这一点上它非常灵活。

我认为这可能是一种方式,但效率不高

    If CandName1.Text = "" Then
        MessageBox.Show("Please enter a name in Candidate 1")
        CandName1.Focus()
    Else
        CandName2.Focus()
    End If



    If CandName2.Text = "" Then
        MessageBox.Show("Please enter an name in Candidate 2")
        CandName3.Focus()
    Else
        CandName3.Focus()
    End If

    If CandName3.Text = "" Then
        MessageBox.Show("Please enter a name in Candidate 3")
        CandName3.Focus()

    Else
        CandName4.Focus()
    End If

    If CandName4.Text = "" Then
        MessageBox.Show("Please enter a name in candidate 4")
        CandName4.Focus()
    Else
        CandName5.Focus()
    End If

    If CandName5.Text = "" Then
        MessageBox.Show("Pleae enter a name in candidat 5")
        CandName5.Focus()
    Else
        loading.Show()
    End If
。。。五个人

loading.Show()
Me.Hide()
您希望确保尽早使用Return语句退出此操作,以避免接触到代码:

loading.Show()
Me.Hide()

请注意,CandName1.Text=非常不可靠。比如CandName1.Text.Trim.Length谢谢你的帮助。我已经试过了,但下一部分的程序开始了。因为当按下提交按钮时,我有一个显示下一个表单的按钮,它告诉我文本框中没有任何内容,但也会加载下一个表单。是否有一个“如果我可以显示下一个表单”,以便在显示下一个表单之前检查所有文本框?我已经这样做了,但是现在消息框不动了!!我离解决方案越来越近了。谢谢你的帮助。当CandName1.Text=MessageBox.Show时,请在候选项1 CandName1.Focus中输入一个名称。加载时结束。Show Me.HideSorry对于延迟响应,听起来您可能需要了解一些基础知识。
loading.Show()
Me.Hide()