所以我是Visual Basic的极端初学者,我尝试使用单选按钮和标签进行简单的4个问题测验,该标签允许用户选择所呈现问题的答案然后记录他们正确回答了多少问题。我决定使用循环来计算用户所处的问题,以及他们已正确回答了多少问题。我必须在这里遗漏一些明显的东西,因为当我单击按钮启动此代码时,程序完全冻结。
我做错了什么? (如果这个问题过于模糊,请道歉)
Private Sub QuizButton1_Click(sender As Object, e As EventArgs) Handles QuizButton1.Click
Dim question As Integer = 0
Dim correct As Integer = 0
Do Until question = 4
While question = 0
QuizLabel1.Text = "How much force do the Great Horned Owl's talons put out while clenched? A. 28 pounds B. 13 pounds C. 200 pounds D. 20 pounds"
If Abutton1.Checked Then
question = 1
correct = correct + 1
ElseIf Bbutton1.Checked Then
question = 1
ElseIf Cbutton1.Checked Then
question = 1
ElseIf Dbutton1.Checked Then
question = 1
End If
End While
While question = 1
QuizLabel1.Text = "What's a nickname for the Great Horned Owl? A. Lion Owl B. Tiger Owl C. Hawk Owl D. Cat Owl "
If Abutton1.Checked Then
question = 2
ElseIf Bbutton1.Checked Then
question = 2
correct = correct + 1
ElseIf Cbutton1.Checked Then
question = 2
ElseIf Dbutton1.Checked Then
question = 2
End If
End While
While question = 2
QuizLabel1.Text = "Why is this owl called 'Horned'? A. It has small horns B. It has pointy ears C. Common folklore D. It has feathery tufts on its head"
If Abutton1.Checked Then
question = 3
ElseIf Bbutton1.Checked Then
question = 3
ElseIf Cbutton1.Checked Then
question = 3
ElseIf Dbutton1.Checked Then
question = 3
correct = correct + 1
End If
End While
While question = 3
QuizLabel1.Text = "What's the maximum recorded length of a Great Horned Owl? A. 20.4 inches B. 15.8 inches C. 12.3 inches D. 24.8 inches"
If Abutton1.Checked Then
question = 4
ElseIf Bbutton1.Checked Then
question = 4
ElseIf Cbutton1.Checked Then
question = 4
ElseIf Dbutton1.Checked Then
question = 4
correct = correct + 1
End If
End While
Loop
Dim score As Integer
score = correct * 25
QuizLabel1.Text = "Thanks for taking the quiz! You scored a " & score & "%. Press the button below to play again."
End Sub
答案 0 :(得分:2)
我不是VB专家,但我可以在这里提供一些帮助。如果我不得不猜测我会说你的程序是锁定的,因为它处于无限循环中。我认为循环是在不断评估,不允许其他任何东西。我会使用事件处理程序,并在用户单击答案时触发评估。看起来你有一个事件处理程序来启动测验,但循环接管了。我不确定你的布局是什么,但我正在使用你的a,b,c和d芒的按钮。当您单击该按钮时,它会对事件进行分类并进行相应处理。我试着让这很容易理解。有更优雅的方法来实现这一点,但这将有效。尝试这样的事情:
Public Class Form1
Dim question As Integer
Dim correct As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
correct = 0
Label2.Text = correct
Abutton1.Hide()
Bbutton1.Hide()
Cbutton1.Hide()
Dbutton1.Hide()
End Sub
Private Sub QuizButton1_Click(sender As Object, e As EventArgs) Handles QuizButton1.Click
question = 0
QuizLabel1.Text = "How much force do the Great Horned Owl's talons put out while clenched? A. 28 pounds B. 13 pounds C. 200 pounds D. 20 pounds"
QuizButton1.Hide()
Abutton1.Show()
Bbutton1.Show()
Cbutton1.Show()
Dbutton1.Show()
End Sub
Private Sub Abutton1_Click(sender As Object, e As EventArgs) Handles Abutton1.Click
test(1)
End Sub
Private Sub Bbutton1_Click(sender As Object, e As EventArgs) Handles Bbutton1.Click
test(2)
End Sub
Private Sub Cbutton1_Click(sender As Object, e As EventArgs) Handles Cbutton1.Click
test(3)
End Sub
Private Sub Dbutton1_Click(sender As Object, e As EventArgs) Handles Dbutton1.Click
test(4)
End Sub
Private Sub test(button)
Select Case question
Case 0
If button = 1 Then
correct = correct + 1
Label2.Text = correct
End If
question = question + 1
QuizLabel1.Text = "What's a nickname for the Great Horned Owl? A. Lion Owl B. Tiger Owl C. Hawk Owl D. Cat Owl "
Case 1
If button = 1 Then
correct = correct + 1
Label2.Text = correct
End If
question = question + 1
QuizLabel1.Text = "What's a nickname for the Great Horned Owl? A. Lion Owl B. Tiger Owl C. Hawk Owl D. Cat Owl "
Case 2
If button = 4 Then
correct = correct + 1
Label2.Text = correct
End If
question = question + 1
QuizLabel1.Text = "Why is this owl called 'Horned'? A. It has small horns B. It has pointy ears C. Common folklore D. It has feathery tufts on its head"
End Select
End Sub
End Class