DataGridView重置Scroll& Select on Update

时间:2013-10-17 08:22:58

标签: c# winforms select datagridview scrollbar

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

它无法正常工作,如果选择单元格并在同一时间进行更新,滚动条总是会抽搐,多选不能正常工作

0 个答案:

没有答案