VB运行为什么会出现隐藏的选项?

这个程序是一个考试答题用程序,共5题,运行为什么在第2题会出现“”“NONE”?
代码如下:
相关变量:

Dim tm(0 To 4) As String '当前题目号
Dim xx(0 To 4, 0 To 3) As String '题目是选择题,每题选项最多4个,多出的则为"NONE"
Dim nowd As Integer '当前考生作答题目

错误代码:

'后退按钮相关错误代码
Label3.Caption = tm(nowd)
Check1.Caption = xx(nowd, 0)
Check2.Caption = xx(nowd, 1)
Check3.Caption = xx(nowd, 2)
Check4.Caption = xx(nowd, 3)
If xx(nowd, 2) = "NONE" Then '隐藏含"NONE"的控件
Check3.Visible = False
Check4.Visible = False
Else
If xx(nowd, 3) = "NONE" Then
Check4.Visible = False
End If
End If
If xx(nowd, 2) <> "NONE" Then '显示隐藏的不含"NONE"的控件
Check3.Visible = True
Check4.Visible = True
Else
If xx(nowd, 3) <> "NONE" Then
Check4.Visible = True
End If
End If
End Sub

题目情况:

题目选项量
14
23
34
42
53

为什么2题还是显示了"NONE"?谢谢

以下答案参考自ChatGPT。

在 Command2_Click 事件中,你想要显示上一题的选项,并且如果其中一个选项标记为 "NONE",则隐藏多余的选项。但是你只处理了隐藏的情况,而没有处理显示的情况。这可能导致在从下一题回到上一题时,不会正确显示选项。

在 Command3_Click 事件中,你处理了下一题的逻辑,但是你没有对 "NONE" 选项进行正确的显示和隐藏。这也可能导致在选择了 "NONE" 选项的情况下,下一题的选项不会正确显示。

为了解决这个问题,你可以简化逻辑,只在每次展示新题目时判断 "NONE" 选项是否需要隐藏。我会为你提供一个修复后的代码示例:

Private Sub Command2_Click()
    nowd = nowd - 1
    
    If nowd >= 0 And nowd < 4 Then
        Command3.Visible = True
    End If
    
    If nowd = 0 Then
        Command2.Visible = False
    End If
    
    Label3.Caption = tm(nowd)
    Check1.Caption = xx(nowd, 0)
    Check2.Caption = xx(nowd, 1)
    Check3.Caption = xx(nowd, 2)
    Check4.Caption = xx(nowd, 3)
    
    ' Hide "NONE" options if needed
    If xx(nowd, 2) = "NONE" Then
        Check3.Visible = False
        Check4.Visible = False
    ElseIf xx(nowd, 3) = "NONE" Then
        Check4.Visible = False
    Else
        Check3.Visible = True
        Check4.Visible = True
    End If
End Sub

Private Sub Command3_Click()
    ' ...
    
    nowd = nowd + 1
    
    If nowd >= 0 And nowd < 4 Then
        Command2.Visible = True
    End If
    
    If nowd = 4 Then
        Command3.Visible = False
    End If
    
    Label3.Caption = tm(nowd)
    Check1.Caption = xx(nowd, 0)
    Check2.Caption = xx(nowd, 1)
    Check3.Caption = xx(nowd, 2)
    Check4.Caption = xx(nowd, 3)
    
    ' Hide "NONE" options if needed
    If xx(nowd, 2) = "NONE" Then
        Check3.Visible = False
        Check4.Visible = False
    ElseIf xx(nowd, 3) = "NONE" Then
        Check4.Visible = False
    Else
        Check3.Visible = True
        Check4.Visible = True
    End If
End Sub

这个要看你的控件的初始值
方便的话,可以远程帮你看看。

【以下回答由 GPT 生成】

问题出现的原因是在代码中,如果第二题的第三个选项(xx(nowd, 2))等于 "None",那么就会将第三和第四个选项(Check3 和 Check4)隐藏起来。这是因为在判断条件中,如果选项为 "None",就会执行隐藏控件的代码。

解决这个问题的方法是,不应该以 "None" 作为判断条件来隐藏控件,因为这样可能会导致其他题目选项也被隐藏。相反,应该判断题目的选项数量是否小于等于2,如果是的话,才隐藏第三和第四个选项。

以下是修改后的代码:

'后退按钮相关代码修改
Label3.Caption = tm(nowd)
Check1.Caption = xx(nowd, 0)
Check2.Caption = xx(nowd, 1)
Check3.Caption = xx(nowd, 2)
Check4.Caption = xx(nowd, 3)
If xx(nowd, 3) = "" Then '判断是否只有两个选项
    Check3.Visible = False
    Check4.Visible = False
End If

修改后的代码会判断第四个选项是否为空字符串,如果为空,则说明只有两个选项,此时才会隐藏第三和第四个选项。

这样修改后,就能避免 "None" 选项隐藏的问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^