У меня есть список, в котором отображается ряд таймеров. Каждые 100 мс я обновляю список, чтобы отобразить истекшее время начала каждого таймера. Когда я пытаюсь прокрутить список вниз, всегда кажется, что он возвращается наверх. Я предполагал, что это было связано с фокусом списка. Кажется, я не могу понять, как остановить прокрутку на выбранный предмет. Не знаю, нужно ли тебе это. Но вот код и для моего таймера обновления для списка, и для моего класса таймера
Таймер обновления:
private void tmrUpdate_Tick(object sender, EventArgs e)
{
for(int i = 0; i < intNumTables; i++)
{
litTimers.Items[i] = string.Format("Timer {0:##}:{1,18}",
timerArr[i].intTimerNum, timerArr[i].timer.GetTime());
}
}
Класс таймера:
class TimerClass
{
private System.Timers.Timer timer;
private int intHours, intMinutes, intSeconds = 0;
private string strCounter;
private bool isRunning = false;
public TimerClass()
{
timer = new System.Timers.Timer();
timer.Interval = 1000;
timer.Elapsed += OnTimeEvent;
}
public void StartTimer()
{
timer.Start();
isRunning = true;
}
public void StopTimer()
{
timer.Stop();
isRunning = false;
}
public void ResetTimer()
{
timer.Stop();
isRunning = false;
intHours = intMinutes = intSeconds = 0;
strCounter = null;
}
public bool IsRunning()
{
if (isRunning == false)
return false;
else
return true;
}
public string GetTime()
{
return strCounter;
}
private void OnTimeEvent(object sender, ElapsedEventArgs e)
{
intSeconds++;
if (intSeconds == 60)
{
intSeconds = 0;
intMinutes++;
}
if (intMinutes == 60)
{
intMinutes = 0;
intHours++;
}
strCounter = string.Format("{0:00}:{1:00}:{2:00}", intHours, intMinutes, intSeconds);
}