【发布时间】:2012-12-07 11:11:52
【问题描述】:
我有一个表单,其中包含一个文本框,显示时间间隔为 1 秒,直到 2 分钟。它工作正常。但是,我需要计时器在一轮游戏结束时停止,并在单击另一个表单的按钮时重新开始。所以我在timer_tick事件处理程序中有_timer.Stop(),在Form 2的按钮click事件处理程序中有_timer.Start()。
我的问题是计时器从经过多少时间开始,直到我按下另一个表单上的按钮,而不是再次从 0:00 开始。有什么想法吗?
这是关于计时器的代码:
private DateTime _myDateTime;
private System.Windows.Forms.Timer _timer;
private DateTime newDate;
public Tournament()
{
_timer = new System.Windows.Forms.Timer();
_timer.Interval = 1000;
_timer.Tick += Timer_Tick;
_myDateTime = DateTime.Now;
newDate = new DateTime();
newDate = newDate.AddMinutes(2.00);
_timer.Start();
InitializeComponent();
}
void Timer_Tick(object sender, EventArgs e)
{
var diff = DateTime.Now.Subtract(_myDateTime);
this.textBox1.Text = diff.ToString(@"mm\:ss");
DateTime dt = Convert.ToDateTime(diff.ToString());
if (newDate.Minute == dt.Minute)
{
_timer.Stop();
_myDateTime = DateTime.Now;
displayPointsOrResults();
this.textBox1.Text = diff.ToString(@"mm\:ss");
}
}
在displayPointsOrResults() 我正在创建另一个表单Points() 的实例,所以在点表单中我有按钮1,我在它的事件处理程序中有这个,除了与计时器无关的其他事情:tournament.Timer1.Start();
我从锦标赛课程中获取计时器并重新开始。
我做错了什么?
【问题讨论】:
-
试试 _timer.Stop(); _timer.Enabled = false;