私は、一時停止する機能を持つC#winformsアプリケーションでカウントダウンタイマー(30分)を作成しようとしていましたが、一時停止が発生した場所から再開しました。私は、System.Windows.Forms.Timerの特定の一時停止機能がないことを知っているので、これを達成するためにいくつかのソリューションを試しました。私はインターネットを精査したが、自分のシナリオに適用できるものは見つけられなかった。私が試したことのすべては、30分後に再びタイマーを開始するか、またはポーズなしでどこから継続するかのいずれかになります。これは私を怒らせる。誰かがこれを行うための代替方法を助けたり提案したりできますか?これは私の最初の投稿ですので、何か誤りがあった場合は謝ります。以下のコード。私は問題を引き起こしているコードをコメントアウトしました。構文的にも論理的にも正しいわけではありません。c#countdown timer pause
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;
}
}
}
あなたはタイマーを一時停止するのはなぜ? 10分後に一時停止すると、20分後に最初に再開したい場合は再開しますか? – Adil
さて、 'DateTime pauseStart'と呼ばれる別の変数を追加する際の問題は何ですか?また、ユーザーがタイマーのポーズを解除すると、その差を' startTime'に追加しますか? – Psi
ボタンをクリックしたときに設定された 'startTime'を使用している' StartButton_Click'を使用している場合はどうすれば "unpausing"しますか? – doctorlove