I have a form which includes a textbox showing the time passing with an interval of 1 second up till 2 minutes. It is working ok. However I need the timer to stop when a round of game is over and start again when a button from another form is clicked. So I have _timer.Stop() in the timer_tick event handler and _timer.Start() in the button click event handler of Form 2.
My problem is that the timer then starts from how much time passes until I press the button on the other form and not from 0:00 again. Any Ideas?
This is the code regarding the timer:
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");
}
}
In displayPointsOrResults() I am creating instance of another form Points() so in Points form I have button 1 and I have this in its event handler apart other things which does not concern the timer: tournament.Timer1.Start();
Where I am getting the timer from the tournament class and starting it again.
What am I doing wrong?
Ah the global vars, blessing and curse together.
Do you have resetted the
_myDateTimeto DateTime.Now, when you press the button?