2012-02-16 48 views

回答

0

嘗試使用FirstDisplayedScrollingColumnIndex屬性。應該幫助。如果要設置FirstDisplayedScrollingColumnIndex,它會跳轉到指定列索引的開始位置。

喜歡的東西:

protected override void OnScroll(ScrollEventArgs e) { 
    base.OnScroll(e); 
    this.FirstDisplayedScrollingColumnIndex = Convert.ToInt32(this.HorizontalScrollBar.Value/this.Width); } 
1

您可以覆蓋OnScroll方法和計算下一偏移

protected override void OnScroll(ScrollEventArgs e) 
    { 
     if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll) 
     { 
      e.NewValue = GetColumnOffset(e.NewValue);; 
     } 
     base.OnScroll(e); 
    } 

    private int GetColumnOffset(int offset) 
    { 
     int start = 0, end = 0; 
     foreach (var column in Columns.Cast<DataGridViewColumn>().Where(c=>!c.Frozen)) 
     { 
      end = start + column.Width; 
      if (start <= offset && offset < end) 
      { 
       break; 
      } 
      start = end; 
     } 
     return start == offset ? offset : end; 
    }