DataGridView可以水平滚动交错的庄园(类似于excel)。
当滚动到达单元格边界时,我不需要沿着列单元格(连续地)滚动,网格应滚动下一列单元格。
答案 0 :(得分: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;
}
答案 1 :(得分:0)
尝试使用FirstDisplayedScrollingColumnIndex属性。应该有所帮助如果要设置FirstDisplayedScrollingColumnIndex,它会跳转到指定列索引的开头。
类似的东西:
protected override void OnScroll(ScrollEventArgs e) {
base.OnScroll(e);
this.FirstDisplayedScrollingColumnIndex = Convert.ToInt32(this.HorizontalScrollBar.Value / this.Width); }