[英]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.