こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C#での時間制限のプログラム

C#初心者です。Visual studioでプログラムを書いてます。
ラベルに制限時間を表示させ、起動して30秒経つと
「もういちどやりますか?」というメッセージボックスが出て、
「はい」でもう一度開始、「いいえ」でプログラムを終了させるような
処理をさせたいのですが、「はい」を押しても同じメッセージボックスが出てループしてしまい、もう一度開始させることができません…。
解決する方法を教えていただきたいです。よろしくお願いします。
以下、書いたコードです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace timelimit
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

DateTime StartTime;
TimeSpan TimeLimit;
private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
StartTime = DateTime.Now;
TimeLimit = new TimeSpan(0,0,30);


}
private void timer1_Tick(object sender, EventArgs e)
{
TimeSpan tm = DateTime.Now - StartTime;
if(tm > TimeLimit)
{
TimeLimit = new TimeSpan(0, 0, 30);
timer1.Enabled = false;

DialogResult result = MessageBox.Show
("時間終了!もういちどやりますか?","終了処理",MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
timer1.Enabled = true;

}
else if (result == DialogResult.No)
{
Close();
}

}else{
label1.Text = (TimeLimit - tm).ToString();
}
}

投稿日時 - 2015-07-12 20:49:23

QNo.9011161

すぐに回答ほしいです

質問者が選んだベストアンサー

パッと見の判断ですが,

タイマー再開しても,
if(tm > TimeLimit)
がまたtrueになって,再度繰り返してしまうだけでは?

再開する際は,StartTime を現在の時間に初期化し直さないといけないのでは?

投稿日時 - 2015-07-12 22:34:28

お礼

if(tm > TimeLimit)の後にStartTime = DateTime.Now;を入力したら
できるようになりました。
ありがとうございました!

投稿日時 - 2015-07-12 23:35:58

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)