我需要在VB中显示标签之间添加延迟,但我似乎遇到了麻烦

时间:2015-05-29 01:23:44

标签: vb.net multithreading visual-studio-2010

我正在为“有趣”创建一个简单的应用程序。当用户打开应用程序时,它会尝试连接到设备并将其关闭。我想让它慢慢显示像

这样的标签
Connecting to device...
(wait like 10 seconds)
Exploiting registry...
(wait like 10 seconds)

依此类推,正如你可以从下面的代码中看到我使用system.threading.thread.sleep(2000)它可以工作,但它会暂停整个代码,因为这个shutdown.vb是从一个单独的main.vb打开的,它只是整个混乱执行和剂量工作!除了线程睡眠之外还有其他方法吗?我只需要在每一行之间暂停一下,谢谢!代码如下!

Public Class shutdown
    Private Sub shutdown_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Label2.Hide()
        Label3.Hide()
        Label4.Hide()
        shutdownConnect()
    End Sub
    Private Sub shutdownConnect()
        Label2.Show()
        System.Threading.Thread.Sleep(2000)
        Label3.Show()
        System.Threading.Thread.Sleep(2000)
        Label4.Show()
    End Sub
End Class

2 个答案:

答案 0 :(得分:2)

您可以使用Timer。在设计器中将标签的visibilty设置为False,然后使用计时器更改它。

Public Class shutdown
 Private counter As Integer
 Private Sub shutdown_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    timer1.Start()
 End Sub
 Private Sub timer1_Tick() Handles timer1.Tick
    counter += 1
    Select Case counter
      Case 1
       Label2.Visible = True
      Case 2
       Label3.Visible = True
      Case 3
       Label4.Visible = True
       timer1.Stop()
       counter = 0 'reset for next time
    End Select
 End Sub
End Class

答案 1 :(得分:1)

Load事件处理程序中隐藏或显示任何内容都没有意义,因为此时甚至没有显示该表单。您对Thread.Sleep的使用也非常不合适。睡觉UI线程是非常重要的事情。

此处的正确方法是首先在设计器中将VisibleLabel3的{​​{1}}属性设置为Label4。这样,只是自然地显示表单将显示False但不显示其他表单。您还可以使用Label2的{​​{1}}和Timer事件处理程序,Interval下一个Tick。您可以将Show添加到队列或其他一些集合中,然后,当它们全部显示时,Label Label