显示标签和移动形状

时间:2012-05-23 06:40:22

标签: c# wpf timer

我是C#和WPF的新手。我想做以下事情:

  1. 在5秒后一个接一个地显示几个标签,

  2. 完成上述操作后,我必须在画布上移动一个形状大约十次,每次移动之间的间隔为5秒,

  3. 执行上述操作,但时间间隔仅为2秒。

  4. 以下是代码:

        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();
            }
        }
    

    但上面的问题是:

    1. 计时器和计时器2同时启动。

    2. 标签不会一个接一个地显示 - 测试出现,5秒后再见,你好,永远不会出现!!

    3. 有没有办法重置定时器并像上面提到的Shapemove或startDisplay函数一样重复调用它们?

    4. 请帮我解决上述问题。

1 个答案:

答案 0 :(得分:1)

不要使用计时器。请改用StoryBoards。

在故事板中,您可以安排操纵Visibility,Opacity,Location,...控件的任何(依赖)属性的动画。

See Animations in this tutorial