【问题标题】:Start an eventhandler when my timer value reaches 0当我的计时器值达到 0 时启动事件处理程序
【发布时间】:2012-07-21 15:09:48
【问题描述】:

这是我的计时器代码,我想在计时器达到 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);

我应该放什么东西。

【问题讨论】:

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


    【解决方案1】:

    你根本不需要 gameOverEvent,你可以在 Each_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));
       }
    }
    

    【讨论】:

      【解决方案2】:
      if (i <= 0)
          gameOverEvent(null, null);
      

      【讨论】:

        【解决方案3】:

        你必须在你的类中实现一个事件处理程序

        public event EventHandler GameLost;
        

        你可以从这个类中引发事件

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

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

        【讨论】:

          猜你喜欢
          • 2021-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多