VB6 ProgressBar不工作?

VB6 ProgressBar不工作?,vb6,Vb6,插入了我的进度条,但未按预期工作。当我登录时,它可以工作,但不会自动加载第二个表单 这是我的进度/计时器代码 Private Sub Timer1_Timer() If ProgressBar1.Value = 100 Then ProgressBar1.Value = 0 Else ProgressBar1.Value = Val(ProgressBar1.Value) + Val(20) End If Label3.Caption = ProgressBar1.

插入了我的进度条,但未按预期工作。当我登录时,它可以工作,但不会自动加载第二个表单

这是我的进度/计时器代码

Private Sub Timer1_Timer()
  If ProgressBar1.Value = 100 Then
  ProgressBar1.Value = 0
  Else
   ProgressBar1.Value = Val(ProgressBar1.Value) + Val(20)
   End If
   Label3.Caption = ProgressBar1.Value
标签,用于检测100,变量prg用于保持

Private Sub Label3_Change()
If (Label3.Caption = 100) Then
prg = 1
Timer1.Interval = 0
End If
End Sub
登录按钮

 Private Sub cmdSign_Click()
 currentTime = TimeValue(Now)
 strCurrdate = Format(Date, "mmm d, YYYY")

 rx.Open "Select * from login where username ='" & Text1 & "' and password='" & Text2 & "'", db, 3, 3
 If (counter = 3) And (rx.EOF = True) Then
 MsgBox "You guessed too many times! Intruder alert!"
End
    Else
        If rx.EOF = True Then
              MsgBox "Invalid Username or Password"
            counter = counter + 1
              Text1 = ""
              Text2 = ""
        Else
             user1 = Text1.Text
             logTime = currentTime
             rxd.Open "Select * from logHistory", db, 3, 3

               With rxd
                       .AddNew
                       .Fields("username") = user1
                      .Fields("TimeDate") = strCurrdate
                      .Fields("TimeIn") = logTime
                      .Update
               End With
             Set rxd = Nothing
                'problem might be here
                ProgressBar1.Visible = True
                Timer1.Interval = 100
                Label3.Visible = True
                Timer1.Enabled = True
                If prg = 1 Then
                   MsgBox "Welcome " + Text1 + " to SPARTAN!"
                   mainmenu.Show
                   End If
      End If
     End If

     Set rx = Nothing
    End Sub

有什么帮助吗?

一旦计时器启动,它将与代码的其余部分异步运行。按照您对登录按钮进行编码的方式,您希望计时器将progressbar从0移动到100,将(我假设)模块作用域变量prg设置为1,然后继续。实际上,您的代码启用计时器并继续。当它到达
时,如果prg=1,则
语句prg仍然是它初始化的位置。解决此问题的一种方法是检查计时器事件中的prg变量

Private Sub Timer1_Timer()
    If ProgressBar1.Value = 100 Then
        Timer1.Enabled = False  ' don't fire the timer event again
        ProgressBar1.Value = 0
        MsgBox "Welcome " & Text1 & " to SPARTAN!" 
        mainmenu.Show
    Else
        ProgressBar1.Value = Val(ProgressBar1.Value) + Val(20)
    End If
    Label3.Caption = ProgressBar1.Value
End Sub

我还将字符串连接+更改为&。加号“+”可以工作,但仅在3之后的VB版本中包含,用于向后兼容性,并且将其用于算术以外的其他用途被认为是不好的形式。在VB版本4及更高版本中,应使用符号“&”进行串联

我计划切换到vb.net?有即时的代码转换吗?说真的,别理那些巨魔。这就是解决办法!现在很好用。向我的模块声明prg并将其放入计时器事件中。