Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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.net_Loops - Fatal编程技术网

Vb.net 为什么这段代码中的循环不起作用?

Vb.net 为什么这段代码中的循环不起作用?,vb.net,loops,Vb.net,Loops,我不明白为什么它不起作用,我尝试了For循环、do-until循环和do-while循环,但它们就是不想起作用。如果没有循环,它工作得非常好,但是我想使用循环来减少正在使用的代码行。“Hub”使用MoveHub.MoveUp(10)调用这个类,MoveDown也一样,但它好像什么都不做。有什么建议吗 我已经在Hub表单中测试了所有内容,那里的代码没有问题。导致问题的是MoveHub类 代码如下: Public Class MoveHub Public pos As Integer

我不明白为什么它不起作用,我尝试了For循环、do-until循环和do-while循环,但它们就是不想起作用。如果没有循环,它工作得非常好,但是我想使用循环来减少正在使用的代码行。“Hub”使用
MoveHub.MoveUp(10)
调用这个类,
MoveDown
也一样,但它好像什么都不做。有什么建议吗

我已经在Hub表单中测试了所有内容,那里的代码没有问题。导致问题的是MoveHub类

代码如下:

Public Class MoveHub

    Public pos As Integer
    Public toggle As Boolean

    Public Sub MoveUp(speed As Integer)
        If (pos > 0) Then
            '  For Me.pos = 9 To 0
            Do Until pos = 0
                pos -= 1
                Hub.Location = (New Point(Hub.Location.X, Hub.Location.Y - speed))
                If pos = 0 Then
                    Hub.DragPic.Image = My.Resources.DropPicture4
                    toggle = True
                End If
            Loop
            ' Next
        End If
    End Sub

    Public Sub MoveDown(speed As Integer)
        If (pos < 10) Then
            'For Me.pos = 0 To 9
            Do Until pos = 9
                pos += 1
                Hub.Location = (New Point(Hub.Location.X, Hub.Location.Y + speed))
                If pos = 9 Then
                    Hub.DragPic.Image = My.Resources.DropPicture4_Up
                    toggle = False
                End If
            Loop
            'Next
        End If
    End Sub

End Class
公共类MoveHub
作为整数的公共pos
作为布尔值的公共切换
公共子移动(速度为整数)
如果(位置>0),则
“对我来说,pos=9比0
直到pos=0为止
位置-=1
Hub.Location=(新点(Hub.Location.X,Hub.Location.Y-速度))
如果pos=0,则
Hub.DragPic.Image=My.Resources.DropPicture4
切换=真
如果结束
环
”“接着呢
如果结束
端接头
公共子向下移动(速度为整数)
如果(位置<10),则
“对我来说。pos=0到9
直到pos=9为止
pos+=1
Hub.Location=(新点(Hub.Location.X,Hub.Location.Y+速度))
如果位置=9,则
Hub.DragPic.Image=My.Resources.DropPicture4\u Up
toggle=False
如果结束
环
”“接着呢
如果结束
端接头
末级

我想您正在调用MoveUp(10)和aseme,循环将运行10次

这种假设是不正确的。因为接收传递值10的参数是速度。当回路由变量pos控制时


如果我的假设不正确,那么您需要提供调用这些方法的代码以及设置pos值的位置。

您能否在函数的开头设置一个断点,然后在检查
pos
值时跳过每一行?到底什么不起作用?这是学习使用调试器!这是任何专业程序员或认真的爱好者都必须具备的一项重要技能。请阅读。在断点的帮助下,我设法找出了它不起作用的原因,谢谢大家的建议!主轮毂加载时正在设置值;MoveHub.pos=9。我说的是MoveUp(10),所以它每次循环都会向上移动10个像素。在说我意识到我的错误后,我没有写Movehub.pos=9,我写了pos=9,哎哟。。。现在可以了!无论如何,谢谢你的帮助!