我的 datagridview 有问题:当我使用 BindingSource.ResetBindings(false) 更新我的 datagridview 时,它会在我的单元格上删除选择并将滚动条放到开头。
我试图将选定的单元格保存到 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;
}
}
它不能流畅和优雅地工作,滚动条总是在抽搐,如果选择单元格和更新同时发生,多选将无法正常工作