我正在为“有趣”创建一个简单的应用程序。当用户打开应用程序时,它会尝试连接到设备并将其关闭。我想让它慢慢显示像
这样的标签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
答案 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线程是非常重要的事情。
此处的正确方法是首先在设计器中将Visible
和Label3
的{{1}}属性设置为Label4
。这样,只是自然地显示表单将显示False
但不显示其他表单。您还可以使用Label2
的{{1}}和Timer
事件处理程序,Interval
下一个Tick
。您可以将Show
添加到队列或其他一些集合中,然后,当它们全部显示时,Label
Label
。