Search code examples
c#winformsclasstimerstatic

How to resume a game timer from another form?


I'm making a pong game in windows forms and I can't figure out how to unpause after pausing in my gameplay form. After pausing a pause screen form is started and after clicking unpause it unpauses, however, I don't know how to make the timer start again. Please let me know.

Here's my code: Gameplay form:

        if (isPaused)
            Paused();
    }

    private void Paused()
    {
        gameTimer.Stop();
        PausedScreen pausedWindow = new PausedScreen();
        pausedWindow.Show();
        isPaused = false;
    }

Pause Screen form:

    public PausedScreen()
    {
        InitializeComponent();
    }

    private void UnPause(object sender, EventArgs e)
    {
        Hide();
        //Resume timer
    }

    private void QuitGame(object sender, EventArgs e)
    {
        Application.Exit();
    }

Solution

  • You can catch the event "Closed" when your pausedScreen is closed and then restart the timer in this function.

    gameTimer.Stop();
    PausedScreen pausedWindow = new PausedScreen();
    pausedWindow.Show();
    isPaused = false;
    pausedWindow.Closed += new EventHandler(Closed);
    
    private void Closed(object sender, EventArgs e){
        gametimer.Start();
    }
    

    Hope this solves your problem.