如何重启计时器?

时间:2016-02-29 18:20:03

标签: c#

我有这个代码:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if(e.KeyData == Keys.Left)
    {
        left = true;
        right = false;
        down = false;
    }
}

private void timerMoving_Tick(object sender, EventArgs e)
{
    if(Ghost.Bounds.IntersectsWith(panel3.Bounds))
    {
        timerMoving.Stop();
    }

    if(left)
    {
        Ghost.Left -= 5;
        timerMoving.Start();
    }
}

在上面的代码中,我的Ghost(向下移动)击中了panel3边界,它停止了。 我希望我的计时器再次启动,因为我按下向左,向右或向上键,只有当它向下移动时才会停止,然后按下面板3。我试过这样做:

if(left)
{
    Ghost.Left -= 5;
    timerMoving.Start();
}

但没有任何反应,为什么?

1 个答案:

答案 0 :(得分:0)

实现与您的任务描述相关的目标的简单(但不是最佳)方法是添加以下代码段中显示的行:

  private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyData == Keys.Left)
        {
         // add this line   
            if(!timerMoving.Enabled) timerMoving.Start();        
            left = true;
            right = false;
            down = false;
            up = false;

        }
     }

并删除此行,如下所示:

 if (left)
        {

            Ghost.Left -= 5;
            //timerMoving.Start(); - comment off
        }

希望这可能会有所帮助。