如果特定时间过去在C#中显示消息框

时间:2013-05-09 12:24:50

标签: c# timer messagebox stopwatch

所以,我想要这样:如果特定时间从加载表单传递(例如9小时),那么我想显示messagebox表示" 9小时过去了#34;。我的代码是这样的:

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"));
        }

那么,我在哪里写这段代码?如果你有更好的方法,请告诉我。

5 个答案:

答案 0 :(得分:3)

除了使用其他人概述的Timer之外,您还可以直接使用Stopwatch返回的TimeSpan的TotalHours()属性.Elapsed:

        TimeSpan ts = stopWatch.Elapsed;
        if (ts.TotalHours >= 9)
        {
            MessageBox.Show("passed: " + ts.TotalHours.ToString("0.00"));
        }

答案 1 :(得分:2)

人们不欣赏的是,double hours不太可能正好是9.00!为什么不在你想要的时间之后让你的计时器点燃一次9小时。

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");
}

答案 2 :(得分:1)

为了在特定时间段之后执行特定任务,应使用System.Forms.Timer(如果是windows窗体)。您可以使用其Elapsed事件,并可以实现您的条件。

答案 3 :(得分:0)

尝试使用Timer。 Example from here

Timer timer;
public Form1()
{
    InitializeComponent();
    timer.Tick += new EventHandler(timer_Tick); // when timer ticks, timer_Tick will be called
    timer.Interval = (1000) * (10);             // Timer will tick every 10 seconds
    timer.Enabled = true;                       // Enable the timer
    timer.Start();                              // Start the timer
}

void timer_Tick(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"));
    }
}

答案 4 :(得分:0)

使用Timer

  

计时器定期调用代码。它每隔几秒或几分钟   执行一个方法。这对于监控健康状况非常有用   重要的程序,与诊断一样。 System.Timers命名空间   证明是有用的。

看到这个:

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            stopWatch.Start();
            tm.Interval = 1000;
            tm.Enabled = true; 
            tm.Tick += new EventHandler(tm_Tick);
            tm.Start();
        }

        void tm_Tick(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"));
            }
        }
     }