Dim arr() As String = {"Cake", "Mouse", "Heat", "Tent", "Boots", "Pen", "Stairs", "Cube", "Lion", "Cookies", "Ruler", "Ink"}
Dim timing As Boolean = True
Dim i As Integer = 0
Dim n As Integer = 3000
Private Sub Button1_Click(sender As Object, e As EventArgs)
Timer1.Start()
For i = 0 To 11
While timing = True
If Timer1.Interval = n Then
Lbl_Word.Text = arr(i)
timing = False
End If
End While
timing = True
Next
Timer1.Stop()
End Sub
Текст ярлыка не меняется, и я не уверен, что сделал не так. Пожалуйста помоги.
Таймеры работают не так, и вы должны установить Option Strict On.



вы должны поместить код в события таймера. не в событии нажатия кнопки. а в событии нажатия кнопки просто включите таймер.
-Добавить таймер
Если вы используете таймер форм, то код для обновления метки должен быть в событии .Tick. В приведенном ниже коде в обработчике событий используется статическая переменная для отслеживания отображаемой строки.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Timer1.Interval = 3000
If Not Timer1.Enabled Then 'already running?
Timer1.Start() 'no
End If
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim arr() As String = {"Cake", "Mouse", "Heat", "Tent", "Boots", "Pen", "Stairs", "Cube", "Lion", "Cookies", "Ruler", "Ink"}
'Dim arr() As String = {"Cake", "Mouse", "Heat"} 'to test
Static idx As Integer = 0 'which index in arr
If idx < arr.Length Then 'more to show?
'yes
Lbl_Word.Text = arr(idx)
idx += 1
Else
'no
Timer1.Stop()
idx = 0
End If
End Sub
Альтернативный подход без использования таймера.
Private TmrTask As task
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If TmrTask Is Nothing OrElse TmrTask.IsCompleted Then
TmrTask = Task.Run(Sub() MyTimerTask())
End If
End Sub
Private Sub MyTimerTask()
Dim arr() As String = {"Cake", "Mouse", "Heat", "Tent", "Boots", "Pen", "Stairs", "Cube", "Lion", "Cookies", "Ruler", "Ink"}
'Dim arr() As String = {"Cake", "Mouse", "Heat"} 'to test
For Each s As String In arr
Me.BeginInvoke(Sub()
Lbl_Word.Text = s
End Sub)
Threading.Thread.Sleep(3000)
Next
End Sub
Что такое
Timer1? Вы должны использоватьSystem.Windows.Forms.Timerи событиеTickдля обновления пользовательского интерфейса.