我的datagridview有问题:当我使用BindingSource.ResetBindings(false)更新我的datagridview时,它会删除我的单元格上的select并将滚动条拖到开头。
我尝试将所选单元格保存到temp,然后尝试再次选择它们,但是如果我按下鼠标按钮,那么当我刷新表格时,选择区域开始单元格会移动到开始。
我试图通过保存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;
}
}
它无法正常工作,如果选择单元格并在同一时间进行更新,滚动条总是会抽搐,多选不能正常工作