2014-08-31 5 views
-1

Мне нужно подождать следующей строки, ожидающей окончания таймера.Как подождать, пока не остановится таймер

public void animation(){ 
      timer1.start(); 
      labelStatus.Visibility=true; 
    } 

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

private void timer1_Tick(object sender, EventArgs e) 
    { 
     int fromX = lblMove.Location.X; 
     int fromY = lblMove.Location.Y; 

     if (fromY > moveToY) 
     { 
      Y = Y - 5; 
      lblMove.Location = new Point(fromX, Y); 

     } 

     else if (fromY < moveToY) 
     { 
      Y = Y + 5; 
      lblMove.Location = new Point(fromX, Y); 
     } 
     else 
     { 
      timer1.Stop(); 
     } 
    } 

благодарит заранее.

+0

Положить ярлыкStatus.Visibility = true; в заявлении else –

+2

Похоже, вы ждёте 'fromY == moveToY', но это не всегда будет правдой, если вы всегда будете двигаться на 5 пикселей! Не уверен, что вы подразумеваете под _I хочу, чтобы labelStatus был видимым, как вы никогда его не скрываете. Также: Таймеры не заканчиваются: вы их останавливаете. – TaW

ответ

1

Простейшее решение, которое я могу придумать это

public void animation(){ 
    timer1.start(); 
    labelStatus.Visibility=false; 
} 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    [...] 

    else if (fromY < moveToY) 
    { 
     Y = Y + 5; 
     lblMove.Location = new Point(fromX, Y); 
    } 
    else 
    { 
     timer1.Stop(); 

     labelStatus.Visibility = true; 
    } 
} 

Таким образом, при остановке таймера вы делаете ярлык видимым. Есть много других способов сделать это, но это должно быть просто.

+0

Нет, я не хочу использовать это, потому что это внутри цикла, и оно является динамическим – LIH

0

Второй способ.

Очевидно, что таймер не имеет случая «OnStopped», чтобы подключиться (если вы не хотите попробовать с удалением). Однако у Timer есть флаг System.Timer.Timer.Enabled, который сообщает вам, что он работает.

Это не чистое решение, но вы можете создать новую тему и опрос «timer.Enabled» до тех пор, пока он не станет ложным.