C# 如果经过特定时间,则在C中显示messagebox#

C# 如果经过特定时间,则在C中显示messagebox#,c#,timer,messagebox,stopwatch,C#,Timer,Messagebox,Stopwatch,所以,我想这样做:如果从加载表单中经过了特定的时间(例如9小时),那么我想显示messagebox说“9小时过去了”。我的代码是: public partial class Form1 : Form { Stopwatch stopWatch = new Stopwatch(); public Form1() { InitializeComponent(); stopWatch.Start(); } private vo

所以,我想这样做:如果从加载表单中经过了特定的时间(例如9小时),那么我想显示messagebox说“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"));
        }

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

为了在特定时间段后执行特定任务,应使用System.Forms.Timer(对于windows窗体)。您可以使用其已用事件,这样您就可以实现您的条件。

尝试改用计时器

使用:

计时器定期调用代码。每隔几秒钟或几分钟,它就会 执行一个方法。这有助于监测患者的健康状况 重要程序,如诊断程序。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"));
            }
        }
     }

除了使用其他人概述的计时器外,还可以直接使用秒表返回的TimeSpan的TotalHours()属性。已用时间:

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

人们没有意识到的是,
双倍工作时间不太可能正好是9点!为什么不让你的计时器在你想要的时间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");
}

当计时器事件发生时编写代码。阅读Timer类的文档,这是一个很好的自我解释。你应该阅读如何使用Timer。即使没有点击按钮,你希望弹出窗口显示吗?或者你希望它只显示一次按钮被点击?这也是很有帮助的,我希望你没有等待9个小时,看看这是否有效!您应该将其放在Tick()事件中,以代替以前手动计算“sec”、“min”和“hour”的代码*假设您没有使用weston的代码将Interval()设置为所需的整个持续时间!=)
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");
}