当我的计时器值达到0时启动一个事件处理程序

时间:2012-07-21 15:09:48

标签: c# silverlight windows-phone-7 event-handling navigation

这是我的计时器代码,我想在我的计时器达到0后加载我的gameover.xaml。如何连接事件。

    public void StartTimer(object o, RoutedEventArgs sender)
    {
        myDispatcherTimer = new DispatcherTimer();
        myDispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1000); // 1000 Milliseconds 
        myDispatcherTimer.Tick += new EventHandler(Each_Tick);
        myDispatcherTimer.Start();
    }

    // counter
    int i = 60;


    public void Each_Tick(object o, EventArgs sender)
    {
       timerBlock.Text = "Time: " + i--.ToString() + "s";
    }

这是我的事件方法

    private void gameOverEvent(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/gameOver.xaml", UriKind.Relative));
    }

我该怎么做 -

if (i <= 0)
    something += new EventHandler(gameOverEvent);

我应该把什么东西放进去。

3 个答案:

答案 0 :(得分:2)

你根本不需要一个gameOverEvent,你可以在Every_Tick事件处理程序中检查i = 0,如果它是

则导航到页面上的游戏
public void Each_Tick(object o, EventArgs sender) 
{ 
   timerBlock.Text = "Time: " + i--.ToString() + "s";

   if(i = 0)
   {
         NavigationService.Navigate(new Uri("/gameOver.xaml", UriKind.Relative));
   }
}

答案 1 :(得分:1)

if (i <= 0)
    gameOverEvent(null, null);

答案 2 :(得分:1)

您必须在类中实现一个Eventhandler,如

public event EventHandler GameLost;

从这个课程中你可以举起活动

if ((this.GameLost != null) && (i <= 0))
    this.GameLost(this, new EventArgs());

有关更详细的指南,请参阅此tutorial