1

我有一个 DataGridView,我需要每 3 秒更新一次内容。我可以使用以下代码保存 DGV 位置:

    private void UpdateBindings()
    {
        int _ScrollPosition = MonitorGridView.FirstDisplayedScrollingRowIndex;

        _BS.ResetBindings(false); // _BS = BindingSource
        if (_ScrollPosition > -1)
        {
            MonitorGridView.FirstDisplayedScrollingRowIndex = _ScrollPosition;
        }
    }

这段代码完美无缺,但是,我面临的唯一问题是每次重置后我的滚动条上的焦点都丢失了。假设我正在滚动到底部,并且它更新了,我需要再次重新抓取滚动条。这很烦人。

我的问题和这个完全一样:Scrollbar lost focus when datagridview refresh its content

但是,我无法找到答案或想办法解决这个问题。

谁能指出我正确的方法?谢谢

4

1 回答 1

0

通过创建新的 vScrollBar 并以编程方式更改 DataGridView 的当前行值解决了该问题。

    private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
    {
        if (e.NewValue > -1 && e.NewValue < MonitorGridView.Rows.Count)
        {
            MonitorGridView.FirstDisplayedScrollingRowIndex = e.NewValue;
        }
    }
于 2013-11-10T02:40:30.117 回答