ObjectListView - оболочка с открытым исходным кодом вокруг простого .NET WinForms ListView - исправляет эту проблему (и многие другие тоже).
Если вы хотите исправить это в своем собственном коде, вам необходимо прослушать отраженное уведомление LVN_ENDSCROLL
. В обработчике для конца прокрутки сделайте что-то вроде этого:
protected void HandleEndScroll(ref Message m) {
// There is a bug in ListView under XP that causes the gridlines to be
// incorrectly scrolled when the left button is clicked to scroll.
// This is supposedly documented at KB 813791, but I couldn't find it.
if (!ObjectListView.IsVista &&
Control.MouseButtons == MouseButtons.Left &&
this.GridLines) {
this.Invalidate();
this.Update();
}
}
При этом наблюдается небольшое мерцание, но это гораздо лучше, чем полностью перепутать линии сетки.