Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何处理计时器滴答事件vb 2015中的循环?_Vb.net_Visual Studio_Timer - Fatal编程技术网

Vb.net 如何处理计时器滴答事件vb 2015中的循环?

Vb.net 如何处理计时器滴答事件vb 2015中的循环?,vb.net,visual-studio,timer,Vb.net,Visual Studio,Timer,我想在计时器内为循环做一个。由于我想连续检查元素为row的数组,而循环似乎没有从0开始移动,所以我无法继续,有没有办法解决这个问题 我第一次尝试这个: Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick For row = 0 To 9 msgbox(row) Next 然后我尝试了另一种方法,正如一个答案中所建议的那样 Private Sub Timer1_Tick(sender As

我想在计时器内为循环做一个
。由于我想连续检查元素为
row
的数组,而循环似乎没有从0开始移动,所以我无法继续,有没有办法解决这个问题

我第一次尝试这个:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
For row = 0 To 9
msgbox(row)
Next
然后我尝试了另一种方法,正如一个答案中所建议的那样

 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
row+=1
msgbox(row)
if row = 10 then
timer1.stop()
end if
Next
MsgBox
现在将在刻度上输出0+,但不会在10处停止


不要使用for循环,而是使用全局变量并在tick函数中递增它

Dim ctr as integer = 0

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

ctr=ctr+1
row(ctr)
msgbox(row)


if ctr == 10 then
ctr = 0
timer1.stop
end if

有了这段代码,msgbox能够输出0到9并重复这个过程,因为我需要它来连续监视阵列。然而,由于某种原因,当msgbox位于增量方法的第一行或在调用增量之前的计时器滴答声上时,输出始终保持-1,不知道为什么。无论如何,感谢您的所有输入,因为我对visual basic 2015仍然是新手

我同意这一点,您不需要创建循环,计时器将为您完成工作。每x秒执行一次你想要的代码刚刚试过上面的代码。不幸的是,MsgBox在10秒后也不会停止输出,或者可能是我做错了什么?仍然是相同的输出。如果我可以问一下,这一排(ctr)是干什么的?我删除了它,因为VB说它不是一个方法,所以我跳过了它,直接使用msgbox(ctr)。计时器1仍然没有停止,但你能给我看看输出吗?我认为您需要将ctr声明为您的全局视图a在上面添加了一个屏幕截图是的,在勾号事件中添加MessageBox通常不是一个好主意。@LarsTech是的,出于某种原因,根据msgbox()所在的位置,输出也会改变。类似于全0输出或行整数的无止境增量。但不管怎样,我想我现在已经解决了这个问题,我会更新帖子的,谢谢
Dim row As Integer = -1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    RefreshData()
    Timer1.Enabled = True

    initialize()
End sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    increment()
    MsgBox(row)
End sub
Private Sub increment()
    If row > 8 Then
        row = 0

    Else
        row = row + 1

    End If

'my if else statement for checking array variable(row) 
End Sub