Timer.start() unexpectedly?
本文关键字:unexpectedly start Timer | 更新日期: 2023-09-27 18:13:38
private void PlayerClockInPanelControl_Load(object sender, EventArgs e)
{
InitializedMouseDownEvent();
}
private void InitializedMouseDownEvent()
{
aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 2000;
aTimer.Enabled = true;
}
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
this.ShowErrorMessage("Hello");
aTimer.Stop();
}
private void picturebox_MouseDown(object sender, EventArgs e)
{
aTimer.Start();
}
private void picturebox_MouseUp(object sender, EventArgs e)
{
aTimer.Stop();
}
我的想法是,计时器应该只在MouseDown
事件被触发时启动,但现在一旦表单加载,它每秒显示"Hello"。正如代码中提到的,在MouseDown
事件期间只有aTimer.Start()
被调用。我可以知道怎么了吗?
您得到这种行为是因为timer.Start()
和timer.Enabled = true
(以及timer.Stop()
和timer.Enabled = false
)之间没有区别。因此,如果在formLoad
中调用 timer.Enabled = tru
e,则启动定时器。
有关更多信息,请查看此MDSN页面