datagridview に問題があります。datagridview を BindingSource.ResetBindings(false) で更新すると、セルの選択がドロップされ、スクロールバーが最初にドロップされます。
選択したセルを一時的に保存してからもう一度選択しようとしましたが、マウスボタンを押したままにすると、テーブルを更新すると、選択ゾーンの開始セルが最初に移動します。
そして、DGV.FirstDisplayedScrollingColumnIndex と DGV.FirstDisplayedScrollingRowIndex を保存してスクロールバーの状態を保存しようとしましたが、非常にスムーズに動作しません。
誰かがよりエレガントなソリューションを知っていますか?
現在の解決策:
private List<Cell> selectedCells;
private Cell ShowCell;
public void SaveSelections(DataGridView dgv)
{
if (dgv.Rows.Count == 0) return;
ShowCell = new Cell(dgv.FirstDisplayedScrollingColumnIndex, dgv.FirstDisplayedScrollingRowIndex);
selectedCells = new List<Cell>();
foreach (DataGridViewCell c in dgv.SelectedCells)
{
selectedCells.Add(new Cell(c.ColumnIndex, c.RowIndex));
}
}
public void LoadSelections(DataGridView dgv)
{
if (dgv.Rows.Count == 0 || ShowCell == null) return;
dgv.FirstDisplayedScrollingRowIndex = ShowCell.Row;
dgv.FirstDisplayedScrollingColumnIndex = ShowCell.Column;
dgv[0, 0].Selected = false;
foreach (Cell c in selectedCells)
{
dgv[c.Column, c.Row].Selected = true;
}
}
セルの選択と更新が同時に発生すると、スクロールバーが常にけいれんし、複数選択が正しく機能しません。