以下のコードで、DataGridViewで選択されている行が画面の一番上の行に表示されます。
if ( DataGridView1.SelectedCells.Count > 0 ) { DataGridView1.FirstDisplayedScrollingRowIndex = DataGridView1.SelectedCells[0].RowIndex; } |
複数のセルが選択されている場合は、最初のセルがある行を表示します。
まず、DataGridView1.SelectedCells.Countで、選択された行があるかをチェックしています。
選択行がある場合は、最初の選択セルがある行を、DataGridView1.SelectedCells[0].RowIndexで取得し,
その結果をFirstDisplayedScrollingRowIndexにセットすることで、表示上の一番上の行にさせます。
結果としてグリッドがスクロールし、選択行が表示されるようになります。
常に選択行を表示したい場合は、グリッドのセル選択が変わったときのイベントか、タイマーで一定時間毎に上記の処理を行えばOKです。
上記の処理だと、選択された行が既に画面に表示されている場合でも、対象行が一番上に移動してしまいます。
画面外にスクロールアウトされている時だけ一番上の行として表示させる場合は、以下のチェックを追加します。
// 選択された行を先頭行にする if ( DataGridView1.SelectedCells.Count > 0 ) { // 対象行が非表示の場合は何もしない if ( !DataGridView1.SelectedCells[0].Visible ) { return; } // 対象行が既に画面内に表示されている時は何もしない if ( DataGridView1.SelectedCells[0].Displayed ) { return; } DataGridView1.FirstDisplayedScrollingRowIndex = DataGridView1.SelectedCells[0].RowIndex; } |
関連記事
コメントを残す