我正在制作一个 .NET 4 WinForms 应用程序,它从数据库中读取数据并在 DGV 中显示行。但是,行数大于一次可以在屏幕上显示的最大行数。要显示所有数据,我需要自动滚动 DGV 直到最后一行,然后更新数据源以刷新 DGV。
我发现通过简单地增加FirstDisplayedScrollingRowIndex
一很容易做到这一点。但是滚动太锐利了。我希望它能够顺利滚动。
为此,我尝试ScrollRows
直接调用方法。该方法不是公开的,所以我不得不像这样使用反射:
var scrollRows = dgv.GetType().GetMethod("ScrollRows", BindingFlags.Instance | BindingFlags.NonPublic);
scrollRows.Invoke(dgv, new object[] { 1, -1, ScrollEventType.SmallIncrement });
timer_Tick
我从每 20 毫秒触发一次的方法中调用此代码。
DGV 平滑滚动,但它不会在开始时可见的行下方绘制任何行。
有什么办法可以使它平滑滚动并正确显示数据?