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