horizontal scrolling similar to that of excel using DataGridView
DataGridView可以在交错的庄园(类似于Excel)中水平滚动。
我不需要沿列单元格滚动(连续),而是当滚动到达单元格边界时,网格应滚动下一列单元格。
您可以覆盖OnScroll方法并计算下一个偏移量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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; } |
尝试使用FirstDisplayedScrollingColumnIndex属性。 应该有帮助。 如果设置FirstDisplayedScrollingColumnIndex,它将跳转到指定列索引的开头。
就像是:
1 2 3 | protected override void OnScroll(ScrollEventArgs e) { base.OnScroll(e); this.FirstDisplayedScrollingColumnIndex = Convert.ToInt32(this.HorizontalScrollBar.Value / this.Width); } |