データベースからデータを読み取り、DGV に行を表示する .NET 4 WinForms アプリケーションを作成しています。ただし、行数が一度に画面に収まる最大行数を超えています。すべてのデータを表示するには、DGV を最後の行まで自動的にスクロールし、その後、DGV を更新するためにデータ ソースを更新する必要があります。
1 ずつインクリメントするだけで簡単に実行できることがわかりましたFirstDisplayedScrollingRowIndex
。ただしスクロールがキツすぎる。スムーズにスクロールさせたいです。
ScrollRows
そのために、メソッドを直接呼び出してみました。そのメソッドは公開されていないため、次のように Reflection を使用する必要がありました。
var scrollRows = dgv.GetType().GetMethod("ScrollRows", BindingFlags.Instance | BindingFlags.NonPublic);
scrollRows.Invoke(dgv, new object[] { 1, -1, ScrollEventType.SmallIncrement });
timer_Tick
このコードは、 20 ミリ秒ごとにトリガーされるメソッドから呼び出します。
DGV はスムーズにスクロールしますが、最初に表示されていた行の下に行が描画されません。
スムーズにスクロールし、データを適切に表示する方法はありますか?