2

だから、私はこれが欲しい:フォームの読み込みから特定の時間(たとえば9時間)が経過した場合、「9時間経過しました」というメッセージボックスを表示したい. 私のコードはこれです:

public partial class Form1 : Form
{
    Stopwatch stopWatch = new Stopwatch();

    public Form1()
    {
        InitializeComponent();
        stopWatch.Start();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        double sec = stopWatch.ElapsedMilliseconds / 1000;
        double min = sec / 60;
        double hour = min / 60;
        if (hour == 9.00D)
        {
            stopWatch.Stop();
            MessageBox.Show("passed: " + hour.ToString("0.00"));
        }
    }
}

問題は、コードのこの部分をどこに書くべきかわからないことです:

if (hour == 9.00D)
        {
            stopWatch.Stop();
            MessageBox.Show("passed: " + hour.ToString("0.00"));
        }

それで、私はこのコードをどこに書きますか?これを行うより良い方法があれば、教えてください。

4

5 に答える 5

3

他の人が概説したようにタイマーを使用することに加えて、Stopwatch.Elapsed によって返される TimeSpan の TotalHours() プロパティを直接使用できます。

        TimeSpan ts = stopWatch.Elapsed;
        if (ts.TotalHours >= 9)
        {
            MessageBox.Show("passed: " + ts.TotalHours.ToString("0.00"));
        }
于 2013-05-09T13:00:50.877 に答える
2

人々が評価していないのは、double hours正確に 9.00 になる可能性が非常に低いということです! 9 時間後、タイマーを 1 回起動するように依頼してみてはいかがでしょうか。

Timer timer;
public Form1()
{
    InitializeComponent();
    timer.Tick += timer_Tick;
    timer.Interval = TimeSpan.FromHours(9).TotalMilliseconds;
    timer.Start();
}

void timer_Tick(object sender, EventArgs e)
{
    timer.Stop();
    MessageBox.Show("9 hours passed");
}
于 2013-05-09T13:05:03.703 に答える
1

特定の時間の経過後に特定のタスクを実行するには、System.Forms.Timer を使用する必要があります (Windows フォームの場合)。Elapsed イベントを使用して、条件を実装できます。

于 2013-05-09T12:50:01.843 に答える