void _vScrollBar_Scroll(object sender, ScrollEventArgs e)
{
switch (e.Type)
{
case ScrollEventType.Last:
break;
case ScrollEventType.EndScroll:
break;
case ScrollEventType.SmallIncrement:
PerformScrollLineDown();
break;
case ScrollEventType.SmallDecrement:
PerformScrollLineUp();
break;
case ScrollEventType.LargeIncrement:
PerformScrollPageDown();
break;
case ScrollEventType.LargeDecrement:
PerformScrollPageUp();
break;
case ScrollEventType.ThumbPosition:
long lPos = FromScrollPos(e.NewValue);
PerformScrollThumpPosition(lPos);
break;
case ScrollEventType.ThumbTrack:
// to avoid performance problems use a refresh delay implemented with a timer
if (_thumbTrackTimer.Enabled) // stop old timer
_thumbTrackTimer.Enabled = false;
// perform scroll immediately only if last refresh is very old
int currentThumbTrack = System.Environment.TickCount;
if (currentThumbTrack - _lastThumbtrack > THUMPTRACKDELAY)
{
PerformScrollThumbTrack(null, null);
_lastThumbtrack = currentThumbTrack;
break;
}
// start thumbtrack timer
_thumbTrackPosition = FromScrollPos(e.NewValue);
_thumbTrackTimer.Enabled = true;
break;
case ScrollEventType.First:
break;
default:
break;
}
e.NewValue = ToScrollPos(_scrollVpos);
}