2012-02-16 36 views
0

DataGridViewは、(Excelのものに類似した)横置きのマナーで水平方向にスクロールすることは可能です。DataGridViewを使用してExcelと似た水平スクロール

スクロールがセル境界に達したときに列セルに沿ってスクロールする必要はありません(グリッドは次の列セルをスクロールする必要があります)。

答えて

0

FirstDisplayedScrollingColumnIndexプロパティを使用してください。助けてください。 FirstDisplayedScrollingColumnIndexを設定すると、指定された列インデックスの先頭にジャンプします。あなたがメソッドをオーバーライドしOnScrollして計算することができます

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

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; 
    } 
オフセット:

何かのように

関連する問題