Li FRANK 2023-08-16 13:45 采纳率: 68.9%
浏览 7
已结题

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"?谢谢

  • 写回答

3条回答 默认 最新

  • 丨Haruna 2023-08-18 17:13
    关注

    以下答案参考自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
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月21日
  • 已采纳回答 8月21日
  • 创建了问题 8月16日

悬赏问题

  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码
  • ¥15 AutoDL无法使用docker install吗?
  • ¥15 cups交叉编译后移植到tina sdk的t113,只需要实现usb驱动打印机,打印pdf文件