水平滾動可能使DataGridView以水平方式滾動交錯莊園(類似於Excel)。水平滾動類似於Excel的使用DataGridView
當滾動到達單元格邊界時,我不需要沿着列單元格滾動(連續),而應該滾動下一列單元格。
水平滾動可能使DataGridView以水平方式滾動交錯莊園(類似於Excel)。水平滾動類似於Excel的使用DataGridView
當滾動到達單元格邊界時,我不需要沿着列單元格滾動(連續),而應該滾動下一列單元格。
嘗試使用FirstDisplayedScrollingColumnIndex屬性。應該幫助。如果要設置FirstDisplayedScrollingColumnIndex,它會跳轉到指定列索引的開始位置。
喜歡的東西:
protected override void OnScroll(ScrollEventArgs e) {
base.OnScroll(e);
this.FirstDisplayedScrollingColumnIndex = Convert.ToInt32(this.HorizontalScrollBar.Value/this.Width); }
您可以覆蓋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;
}