1

我的 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;
        }
    }

它不能流畅和优雅地工作,滚动条总是在抽搐,如果选择单元格和更新同时发生,多选将无法正常工作

4

0 回答 0