C# Datagridview没有';使用DataGridViewAutoSizeRowsMode.DisplayedCells时,请不要正确滚动到最底行

C# Datagridview没有';使用DataGridViewAutoSizeRowsMode.DisplayedCells时,请不要正确滚动到最底行,c#,winforms,datagridview,scroll,C#,Winforms,Datagridview,Scroll,我使用WinForms DataGridView来显示不同数量的数据。当使用更大数量时,我注意到自动调整所有单元格的大小会导致无法接受的延迟,直到DataGridView响应(从几秒钟到几分钟)。将DataGridViewAutoSizeRowsMode属性设置为DisplayedCells而不是AllCells修复了该问题(3分钟->5秒) 但是现在我遇到了自动滚动到DGV内容底部的问题。 我试图通过设置dgv.FirstDisplayedScrollingRowIndex=dgv.RowCo

我使用WinForms DataGridView来显示不同数量的数据。当使用更大数量时,我注意到自动调整所有单元格的大小会导致无法接受的延迟,直到DataGridView响应(从几秒钟到几分钟)。将DataGridViewAutoSizeRowsMode属性设置为DisplayedCells而不是AllCells修复了该问题(3分钟->5秒)

但是现在我遇到了自动滚动到DGV内容底部的问题。 我试图通过设置
dgv.FirstDisplayedScrollingRowIndex=dgv.RowCount-1来实现这一点
它以前工作得很好,但现在它只是滚动到最后一行,我必须手动单击滚动按钮几次,直到它真正显示最后一行。将滚动条拖动到底部感觉非常不稳定,需要几次拖动才能到达最后一行

我在其他地方读到关于将
dgvAnalysis.CurrentCell
设置为所需行中的单元格的内容,并在DGV的滚动事件处理程序中尝试了以下操作

private void dgv_Scroll(object sender, ScrollEventArgs e)
{
        if (e.ScrollOrientation == ScrollOrientation.VerticalScroll)
        {
            dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
            dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
        }
}
但两者似乎都无济于事。无论出于何种原因,dgv.FirstDisplayedScrollingRowIndex似乎没有设置为我给出的值


有没有人知道如何解决这个问题,或者我在那里可能做错了什么?

而不是
DataGridView.AutoSizeRowsMode=DataGridViewAutoSizeRowsMode.DisplayedCells
使用
DataGridView.AutoResizeRows(DataGridViewAutoSizeRowsMode.DisplayedCells)
方法


如果加载后
DataGridView
内容没有更改,则设置
AutoSizeRowsMode
属性是一项开销。在表单
Load
事件中或数据绑定完成后,调用
DataGridView.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells)
将只执行一次大小调整。

谢谢,但这并没有帮助我解决问题。调整大小基本上没有问题,只是它没有滚动到底部,因为“FirstDisplayedScrollingRowIndex”没有设置为RowCount,而是设置为一个小于该值的数字。