Итак, я новичок в Visual Basic c, и я делаю проект для школы. Пользователь вводит число в текстовое поле (txtnum), чтобы увидеть, угадывает ли пользователь 1 или более из 3 чисел, которые отображаются случайным образом. , Числа указаны только от 1 до 9, и из-за этого я пытался сделать do l oop, то, что я использовал в c ++, для проверки ввода пользователя, если это число и if между 1-9, и после этого, если отображается окно сообщения, сообщающее пользователю, почему, но после этого msgbox не исчезает, потому что он все еще с той же переменной, и я не могу обновить мою переменную, потому что msgbox не исчезает.
Я использую visual basi c 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