Анимация с таймером в Visual Basic?

Я пытаюсь создать анимацию при нажатии кнопки с помощью таймера. Вот мой код:

Private Sub Animate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Animate.Click
        Timer.Enabled = True
End Sub
Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
    Dim m As Integer = 0
    m = m + 1

    Select Case m
        Case 1
            Me.Arrow4.Visible = True
            Me.Arrow5.Visible = True
            Me.Arrow6.Visible = True
        Case 2
            Me.Arrow1.Visible = True
            Me.Label1.Visible = True
            Me.Arrow4.Visible = False
            Me.Arrow5.Visible = False
            Me.Arrow6.Visible = False
        Case 3
            Me.Arrow2.Visible = True
            Me.Label2.Visible = True
            Me.Arrow1.Visible = False
            Me.Label1.Visible = False
        Case 4
            Me.Arrow3.Visible = True
            Me.Label3.Visible = True
            Me.Arrow2.Visible = False
            Me.Label2.Visible = False
    End Select
End Sub

Первый случай показывает, но не все остальное. Я установил интервал для таймера на 1.

Спасибо!


person Glitteropia    schedule 04.09.2015    source источник
comment
На каждом такте таймера вы устанавливаете m на 0, а затем добавляете 1. Это всегда будет 1, когда вы выполняете Select Case. Вместо этого объявите m снаружи Sub Timer_Tick. Private m As Integer и установите для него значение 0 в Animate_Click Sub.   -  person Blackwood    schedule 04.09.2015


Ответы (1)


Остальные случаи никогда не будут отображаться, потому что вы всегда создаете экземпляр m в 0 в рамках метода таймера. m всегда будет 1 при попадании в оператор case. Вам нужно переместить m за пределы таймера на уровне класса, если вы хотите сохранить значение. Просто не забудьте установить m обратно на 0, когда вы нажмете на свой последний случай. например

...

Case 4
   Me.Arrow3.Visible = True
   Me.Label3.Visible = True
   Me.Arrow2.Visible = False
   Me.Label2.Visible = False
   m = 0     

...
person George Johnston    schedule 04.09.2015