vb.net - 使用 do 循环的 Visual Basic 变量验证
问题描述
所以我是 Visual Basic 的新手,我正在为学校做一个项目,用户在文本框(txtnum)中输入一个数字,以查看用户是否猜测随机显示的 3 个数字中的 1 个或多个。这些数字仅适用于 1 到 9,因此我试图制作一个 do 循环,就像我在 c++ 中使用的那样,以验证用户的输入,如果它是一个数字并且是否在 1-9 之间,然后如果显示一个消息框,告诉用户原因,但在此之后 msgbox 不会消失,因为它仍然具有相同的变量,我无法更新我的变量,因为 msgbox 不会消失。
我使用visual basic 2010 express,并用windows窗体做这个项目。
Private Sub btplay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btplay.Click
' A geração de numeros aleatórios inteiros entre 1 e 9
lbln1.Text = Int(1 + Rnd() * 9) 'generates an integer on first label
lbln2.Text = Int(1 + Rnd() * 9) 'generates an integer on second label
lbln3.Text = Int(1 + Rnd() * 9) 'generates an integer on third label
Do
Do
If ((IsNumeric(txtnum.Text) = False)) Then 'check is input is a number
MsgBox("Opção inválida!" & vbNewLine & "Por favor insira um número entre 1 e 9!", 0, "Número inválido")
txtnum.Clear()
txtnum.Focus()
End If
Loop Until (IsNumeric(txtnum.Text) = True) 'segundo loop
If ((Int(txtnum.Text) < 0) Or (Int(txtnum.Text) > 10)) Then 'check if input on gap
MsgBox("Opção inválida!" & vbNewLine & "Por favor insira um número entre 1 e 9!", 0, "Número inválido")
txtnum.Clear()
txtnum.Focus()
End If
Loop While ((Int(txtnum.Text) < 0) Or (Int(txtnum.Text) > 10))
'Validação dos números e atualização da pontuação
If txtnum.Text = lbln1.Text And txtnum.Text = lbln2.Text And txtnum.Text = lbln3.Text Then
lblpontos.Text = lblpontos.Text + 50 ' got 3 numbers right
ElseIf (txtnum.Text = lbln1.Text And txtnum.Text = lbln2.Text) Or (txtnum.Text = lbln1.Text And txtnum.Text = lbln3.Text) Or (txtnum.Text = lbln2.Text And txtnum.Text = lbln3.Text) Then
lblpontos.Text = lblpontos.Text + 25 ' got 2 numbers right
ElseIf txtnum.Text = lbln1.Text Or txtnum.Text = lbln2.Text Or txtnum.Text = lbln3.Text Then
lblpontos.Text = lblpontos.Text + 10 'got 1 number right
ElseIf txtnum.Text <> lbln1.Text And txtnum.Text <> lbln2.Text And txtnum.Text <> lbln3.Text Then
lblpontos.Text = lblpontos.Text - 5 ' hasnt got any number right
End If
End Sub
解决方案
如果您在控制台应用程序中验证输入,您可能希望使用 Do/Loop,但由于 Windows 窗体应用程序是事件驱动的,您只需使用条件 If/Then 语句。
如果您想在用户键入时验证输入,那么您将使用 TextChanged、KeyUp 或 KeyDown 事件,而如果您想在用户“做某事”(例如单击按钮)时验证输入,您将处理“某事”事件(例如按钮的单击事件)。这完全取决于您何时要验证输入。另一种方法是在 TextBox 的 Validating 事件中验证输入。
每当用户执行某些操作(例如单击按钮)时,我都会亲自进行控件验证。下面是一个验证的例子:
- 输入是一个有效的整数
- 整数介于 1 和 9 之间
例子:
Private Sub ButtonValidate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonValidate.Click
Dim input As Integer
Dim isValidInteger As Boolean = Integer.TryParse(txtnum.Text, input)
If (Not isValidInteger) Then
MessageBox.Show("Please enter a valid Integer.")
ElseIf (input < 0 OrElse input > 10) Then
MessageBox.Show("Please enter a valid Integer between 1 and 9.")
Else
' input is a number between 1 and 9
End If
End Sub
推荐阅读
- python - 更 Pythonic 的单线解决方案?
- scala - 使用 List[Strings] 或 Array[Strings] 动态创建一些随机案例类
- python - 无法在 Bokeh python 中更新数据源
- amazon-web-services - 一个负载均衡器在一个 ec2 实例中为多个 ecs 容器提供服务
- android - Android 8.0 打不开wifi开关
- java - android studio中的“以非零退出值1完成”,如何解决?
- azure - Azure 逻辑应用程序 - Foreach over sql 结果集
- python - 我在笔记本电脑上安装了烧瓶。但它似乎只为 python3 运行。如何使它适用于python2?
- python - 提取可以在文件中多次出现的某个字符串
- python - Python 编码,嵌套循环