2010-08-04 47 views
0

我有一個DataGridView有很多列,導致水平滾動條。但是,當我向右滾動並對列進行排序時,datagridview會稍微重新定位自身,但滾動條仍然保持在右側。DataGridView排序重新定位網格的水平位置略

我想停止這種行爲,並保持網格與網格排序前相同的位置,並且我希望繼續在網格中使用自動排序(如果可能的話)。

我發現這個link和這個人有同樣的問題,但是,提出的解決方案似乎並不適用,因爲我沒有進行手動排序。

有什麼想法?

回答

1

我通過以下操作解決了這個問題。

我訂閱了DataGridView.Scroll事件,如果ScrollOrientation是水平的,那麼我將一個成員變量設置爲滾動的NewValue。

然後我訂閱了DataGridView.Sorted事件。在這個事件中,我將Horizo​​ntalScrollingOffset設置爲成員變量。


int _horizontalOffsetStop; 

private void Grid_Scrolled(object sender, ScrollEventArgs e) 
{ 
    if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll) 
    { 
      _horizontalOffsetStop = e.NewValue; 
    } 
} 

private void Grid_Sorted(object sender, EventArgs e) 
{ 
    myGrid.HorizontalScrollingOffset = _horizontalOffsetStop; 
}