我需要等待下一行等待,直到计时器结束。
public void animation(){
timer1.start();
labelStatus.Visibility=true;
}
我希望在timer1完成后可以看到labelStatus。
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 :(得分: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;
}
}
这样,当您停止计时器时,您可以看到标签。还有很多其他方法可以做到这一点,但这应该很简单。
答案 1 :(得分:0)
第二种方法。
显然,Timer没有挂钩的“OnStopped”事件(除非您想尝试使用dispose)。但是,Timer有一个System.Timer.Timer.Enabled
标志,用于告诉您它正在运行。
这不是一个干净的解决方案,但您可以创建一个新的Thread and Poll“timer.Enabled”,直到它变为false。