2015-05-29 3 views
1

Я создаю простое приложение для «забавы», когда пользователь открывает приложение, он притворяется, что подключается к устройству и закрывает его , Я хочу, чтобы медленно отображать метки какМне нужно добавить задержку между отображением меток в VB, но у меня, похоже, возникают проблемы

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

Используйте для этого таймер. – OneFineDay

+0

How tho, @OneFineDay –

ответ

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

Там нет смысла прятаться или показывать что-либо в или из обработчика Load событий, потому что форма даже не отображается в этой точке. Ваше использование Thread.Sleep также очень неуместно. Спящий поток пользовательского интерфейса - это то, что должно почти никогда не выполняться.

Правильный подход здесь должен был бы начать путем установки Visible свойство Label3 и Label4 к False в конструкторе. Таким образом, просто отображение формы естественно отобразит Label2, но не остальные. Вы также использовали бы Timer с Interval 2000 года, а в обработчике событий TickShow следующий Label. Вы можете добавить Label s в очередь или какую-либо другую коллекцию, а затем, когда все они будут отображаться, StopTimer.

Смежные вопросы