【问题标题】:VB.NET Fake ProgressBar [closed]VB.NET 假 ProgressBar [关闭]
【发布时间】:2012-06-20 13:27:51
【问题描述】:

我想做一个假的进度条
当我点击按钮时:

for i = 0 to Maximum 
progressbar1.value = progressbar1.value + 1
next

但是progressbar.value = 100 太快了

【问题讨论】:

    标签: vb.net progress-bar


    【解决方案1】:

    使用计时器,
    按钮:

    timer1.enable = true
    

    计时器:

       If ProgressBar1.value = ProgressBar1.maximum Then
                Timer1.Enabled = False
                Exit Sub
            End If
            ProgressBar1.value = ProgressBar1.value + 1
    

    【讨论】:

    • 它现在可以工作了:),我没有考虑过这个选项,谢谢!。
    【解决方案2】:

    尝试类似...

    for i = 0 to Maximum 
        progressbar1.value = progressbar1.value + 1
        Pause(5)
    next
    
    Public Sub Pause(ByRef seconds As Double)
        Dim fIni as DateTime = Now.AddSeconds(seconds)
    
        While Now < fIni
            My.Application.DoEvents()
        End While
    End Sub
    

    【讨论】:

    • DoEvents 应该避免看看this link
    • 如果你想暂停,为什么不直接使用 Thread.Sleep?
    • 抱歉,当我看到这个问题时,我刚刚抓取了一些我为 Web 抓取工具编写的旧代码,而 My.Application.DoEvents() 在刷新 Web 控件和加载页面时效果很好。我不相信我尝试过使用 Thread.Sleep,现在主要切换到 PHP。感谢您的链接。
    【解决方案3】:

    您通常会在某件事花费很长时间时显示进度,以便向用户显示进度。

        For i = 0 To ProgressBar1.Maximum - 1
            'some long running process happens here 
            ProgressBar1.Value += 1
        Next
    

    如果您想模拟登录运行过程以进行测试等,您可以使用睡眠

        For i = 0 To ProgressBar1.Maximum - 1
            System.Threading.Thread.Sleep(50) 'wait for 50ms
            ProgressBar1.Value += 1
        Next
    

    然而

    这样做的首选方法是在后台工作程序中执行长时间运行的进程,并在完成后使用委托更新进度条。但这是另一个问题。

    【讨论】:

      猜你喜欢
      • 2015-08-05
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 2014-02-10
      • 2022-01-19
      • 2012-02-25
      相关资源
      最近更新 更多