2016-10-19 3 views
0
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 уволено, но теперь, как только форма загружается, он отображает «Привет» каждую секунду. Как упоминалось в коде, только aTimer.Start() вызывается во время события MouseDown. Могу я узнать, что случилось?Timer.start() неожиданно?

+1

[Установка 'aTimer.Enabled = true' такое же, как вызов' aTimer.Start() '] (https://msdn.microsoft.com/en-us/library/system .timers.timer.enabled (v = vs.110) .aspx). Попробуйте удалить эту строку из метода InitializedMouseDownEvent(). –

ответ

3

Вы получаете это поведение, потому что нет никакой разницы между timer.Start() и timer.Enabled = true (а также timer.Stop() и timer.Enabled = false). По этой причине, если вы вызываете timer.Enabled = tru e в свой formLoad, вы запускаете таймер.
Для получения дополнительной информации посетите this MDSN page

Смежные вопросы