关闭表格后继续计时器

时间:2016-01-28 19:00:13

标签: c# winforms timer

var startTime = DateTime.Now;

var timer = new Timer() { Interval = 1000 };

timer.Tick += (obj, args) =>
    label14.Text =
        (TimeSpan.FromMinutes(Convert.ToDouble( comboBox3.Text)*60) - (DateTime.Now - startTime))
        .ToString("hh\\:mm\\:ss");
MessageBox.Show("Timer started");
timer.Enabled = true;

按下按钮时,我会以特定的形式显示计时器,我希望计时器在关闭表单后继续计时,以便给我通知。 但是当关闭表格时计时器停止, 任何想法?

2 个答案:

答案 0 :(得分:2)

你不能"关闭"表单并使Timer对象仍然有效(如果您在主窗体上调用计时器)。 (这就像说我不能点击按钮并在关闭表单后运行一个功能)。但是,在OnFormClosing参数上,您可以使用form.Visible = false并取消实际关闭表单。见这里:Timer doesn't fire after Form closed

如果你想真正关闭表单并使其运行,一个选项可能是查看可能创建一个任务计划程序对象,该对象将在特定时间完成任务。

答案 1 :(得分:0)

快速点击:改为调用“隐藏()” - 这将使计时器继续运行。

现在已经开始了,你仍然可以让你的计时器保持静态 - 理想情况下将它放在一个完全独立的类中,或者,如果你坚持,在主表单上使它静止。然后将您的通知代码放在主表单上。

您仍然可以在该特定表单上为Tick事件添加一个侦听器,并且只需记住在隐藏表单时将其删除(即Tick -= your_label_event_handler