簡體   English   中英

C#倒數計時器暫停

[英]c# countdown timer pause

我一直在嘗試在具有暫停功能的ac#winforms應用程序中創建一個倒計時計時器(從30分鍾開始),然后從發生暫停的地方恢復。 我已經嘗試了多種解決方案來實現此目的,因為我知道System.Windows.Forms.Timer沒有特定的暫停功能。 我搜尋了互聯網,但找不到適合我的方案的任何內容。 我嘗試過的所有操作都會導致計時器從30分鍾重新開始,或者從原本可以不暫停的位置繼續進行。 這讓我發瘋。 任何人都可以幫助或建議替代方法嗎? 這是我在這里的第一篇文章,如果出現任何錯誤,我們深表歉意。 下面的代碼。 我已經注釋掉導致我出現問題的代碼-我知道從語法或邏輯上講這都是不正確的。

public partial class FormWithTimer : Form
{
    System.Windows.Forms.Timer timerx = new System.Windows.Forms.Timer();

    DateTime startTime = DateTime.Now;
    DateTime stopTime = DateTime.Now;

    public FormWithTimer()
    {
        InitializeComponent();
        TimerLabel.Text = "30:00";
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    void timer_Tick(object sender, EventArgs e)
    {

    }

    public void StartButton_Click(object sender, EventArgs e)
    {
        startTime = DateTime.Now;

        BeginTextBox.Text = startTime.ToString();


        TimerLabel.Visible = true;
        timerx.Tick += (obj, args) =>
            TimerLabel.Text = (TimeSpan.FromMinutes(30) - (DateTime.Now - startTime)).ToString("mm\\:ss");

        timerx.Enabled = true;

    }

    public void PauseButton_Click(object sender, EventArgs e)
    {

        if (PauseButton.Text == "Pause")
        {
            timerx.Stop();
            PauseButton.Text = "Start";
            stopTime = DateTime.Now;
        }
        else
        {
            PauseButton.Text = "Pause";

            timerx.Start();
            TimerLabel.Visible = true;
            //timerx.Tick += (obj, args) =>
            //    TimerLabel.Text = (TimeSpan.FromMinutes(30) - (DateTime.Now - (startTime - stopTime))).ToString("mm\\:ss");

            timerx.Enabled = true;
        }

    }

}

我想您正在嘗試使計時器繼續暫停時的位置。

為此,我建議為此使用stopTime

在您的“暫停-暫停”程序中:

public void PauseButton_Click(object sender, EventArgs e)
{

    if (PauseButton.Text == "Pause")
    {
        timerx.Stop();
        PauseButton.Text = "Start";
        stopTime = DateTime.Now;
    }
    else
    {
        PauseButton.Text = "Pause";
        startTime += (DateTime.Now - stopTime);

        timerx.Start();
        TimerLabel.Visible = true;

        timerx.Enabled = true;
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM