由于我的一个窗体 数据量比较大 加载速度很慢 现在想要一个进度条,要求 在show 窗体的时候 先出现进度条 当进度条显示完以后窗体也加载完进度条是单独的一个界面由于VB不支持多线程  所以在这里寻求良方
怎么实现谢谢大家了

解决方案 »

  1.   

    用一個窗體來單獨放進度條,在寫一個進度條有關的函數來控制進度條的進度。
    設進度條的最大值(在函數中),在進度條等于最大值后再hide進度窗口,緊
    跟后面show你想要顯示的窗口!(如果你想要有關的函數我再send 給你)
      

  2.   

    可不可以计算一下,窗体加载的时间,然后用timer控件控制进度条
      

  3.   

    因為工作的原因。很多東西都找不道了。臨時做了一個 ,請參考
    Option ExplicitPrivate Rs As New ADODB.Recordset
    Private Conn As New ADODB.Connection
    Private Sub Command1_Click()
     Dim i As Integer: i = 0
     
     If Rs.State <> adStateClosed Then Rs.Close
     Rs.Open "Select * from People", Conn, adOpenStatic, adLockOptimistic
     
     With Me.MSFlexGrid1
       Do While Not Rs.EOF
        i = i + 1
        Rs.MoveNext
       Loop
     End With
     
     Rs.MoveFirst
     Me.ProgressBar1.Max = i
     Me.ProgressBar1.Min = 0
     Me.ProgressBar1.Value = 0
     
     Do While Not Rs.EOF
        DoEvents
        With Me.MSFlexGrid1
          .Row = .Rows - 1
          .Col = 0
          .Text = Rs("Name")
          .Col = 1
          .Text = Rs("Sex")
          .Rows = .Rows + 1
        End With
        Me.ProgressBar1.Value = Me.ProgressBar1.Value + 1
        Rs.MoveNext
     Loop
     
     Me.ProgressBar1.Visible = False
     
    End Sub
    Private Sub Form_Load()
     Dim strConn As String
     strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Test.mdb;Persist Security Info=False"
     Conn.CursorLocation = adUseClient
     
     Conn.Open strConn
    End SubPrivate Sub Form_Unload(Cancel As Integer)
     If Rs.State <> adStateClosed Then Rs.Close
     Set Rs = Nothing
     
     Conn.Close
     Set Conn = Nothing
     
    End Sub
      

  4.   

    谢谢daisy8675(莫依) ( 
    如此关照
    虽然早已经完成
      

  5.   

    给个简单的吧!
    在窗体(设为form1)加载前先加载并显示一个窗体专用于显示进度条(设为frmProg)并设为在前端显示,进度条可以用timer,至于这个进度条怎么显示进度,可是做个假的进度条,form1 没加载完进度条也就不走完。这样应该可以吧?
    加载了frmprog之后程序会继续加载你要加载的窗体,在form1的load 事件里的最后一句写上unload frmprog 
    就OK了!