所以,我想要这样:如果特定时间从加载表单传递(例如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"));
}
那么,我在哪里写这段代码?如果你有更好的方法,请告诉我。
答案 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"));
}
}
}