我是 C# 和 WPF 的新手。我想做以下事情:
在 5 秒后一个接一个地显示几个标签,
完成上述操作后,我必须在画布上移动一个形状大约十次,每次移动之间的时间间隔为 5 秒,
执行上述操作,但时间间隔仅为 2 秒。
这是代码:
DispatcherTimer timer2 = new DispatcherTimer();
float timerTime = 10;
Label timerlabel = new Label();
private void Window_Loaded(object sender, RoutedEventArgs e)
{
lbl.Content = "test";
startDisplay("hello!!");
startDisplay("bye");
Shapemove(1);
}
private void startDisplay(string st)
{
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(5);
timer.Start();
timer.Tick += (s, e) =>
{
lbl.Content = st;
};
}
private void Shapemove(int i)
{
timer2.Interval = new TimeSpan(0, 0, 2);
timer2.Tick += new EventHandler(timer2_Tick);
timer2.Start();
}
void timer2_Tick(object sender, EventArgs e)
{
Random rand = new Random();
if (timerTime > 0)
{
canvas1.Children.Remove(timerlabel);
timerTime--;
canvas1.Children.Add(timerlabel);
timerlabel.FontSize = 20;
timerlabel.Content = timerTime + "s";
Canvas.SetLeft(rectangle1, rand.Next(640));
Canvas.SetTop(rectangle1, rand.Next(480));
}
else
{
timer2.Stop();
}
}
但上面的问题是:
定时器和定时器 2 同时启动。
标签没有一个接一个地显示 - test 出现了,5 秒后 bye 出现了,hello 从来没有出现过!!
有没有办法像上面提到的 Shapemove 或 startDisplay 函数一样重置计时器并将它们作为函数重复调用?
请帮我解决上述问题。