2015-12-06 5 views
-2

Я не понимаю, почему это не работает, я пробовал цикл For, делаю до цикла и делаю цикл while, но они просто не хотят работать. Без циклов он работает отлично, но я хочу использовать циклы, чтобы уменьшить используемые строки кода. «Хаб» вызывает этот класс, используя MoveHub.MoveUp(10), и то же самое относится к MoveDown, но он как будто ничего не делает. Какие-либо предложения?Почему циклы в этом коде не работают?

Я проверил все в форме концентратора, код там не проблема. Это класс 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 
+0

Можете ли вы установить точку останова в начале ваших функций, а затем переходить через каждую строку при проверке значения 'pos'? –

+2

Что именно не работает? –

+0

Это отличная возможность научиться использовать отладчик! это важный навык любого * профессионального программиста или серьезного энтузиаста * должен иметь – Plutonix

ответ

1

Я думаю, что вы звоните MoveUp (10) и asusme, что цикл будет работать в 10 раз.

Данное допущение неверно. Поскольку параметр, принимающий переданное значение 10, является скоростью. В то время как Loop контролируется переменной pos.

Если мое предположение неверно, вам необходимо предоставить код, вызывающий эти методы, и где задано значение pos.

+0

Значение устанавливается при загрузке основного концентратора; MoveHub.pos = 9. Я говорю MoveUp (10), чтобы он перемещался на 10 пикселей каждый раз, когда он петли. –

+0

После того, как я сказал, что понял свою ошибку, я не писал Movehub.pos = 9, я написал pos = 9, кричит ... Он работает сейчас! В любом случае, спасибо за помощь! –

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