gpt4 book ai didi

c# - Datagridview FirstDisplayedScrollingRowIndex 在网格底部不起作用

转载 作者:行者123 更新时间:2023-11-30 15:39:57 29 4
gpt4 key购买 nike

为了滚动数据网格,我使用了以下代码:

dataGridView1.FirstDisplayedScrollingRowIndex = currentRowIndexInGridView;
dataGridView1.Update();

这适用于不在网格底部的行。如果我将它用于底部行,当我在调试期间检查它时,setter 不会将它设置为我想要的值。例如。我正在设置 FirstDisplayedScrollingRowIndex= 103,但在分配后 FirstDisplayedScrollingRowIndex 的值为 90,因此所需的行不可见。从某个点开始,它停止滚动,我看不到最后 5 行。如果我要添加新行并将它们设置为显示,它会滚动一行,但我再也看不到最后 5 行。

我认为这与以下事实有关:我的某些行具有不同的高度,并且 DisplayedRowCount 的某些内部估计失败了???

有没有办法检测到这种情况,然后强制滚动到数据网格的底部?

编辑:

FirstDisplayedScrollingRowIndex setter 的重要部分在 Reflector 中如下所示:

 if (value > this.displayedBandsInfo.FirstDisplayedScrollingRow)
{
int rows = this.Rows.GetRowCount(DataGridViewElementStates.Visible, this.displayedBandsInfo.FirstDisplayedScrollingRow, value);
this.ScrollRowsByCount(rows, (rows > 1) ? ScrollEventType.LargeIncrement : ScrollEventType.SmallIncrement);
}
else
{
this.ScrollRowIntoView(-1, value, true, false);
}

计算行变量时似乎有错误。

最佳答案

每当添加新行时调用以下方法

    private void Autoscroll()
{

if (dgv.FirstDisplayedScrollingRowIndex + dgv.DisplayedRowCount(false) < dgv.Rows.Count)
{
dgv.FirstDisplayedScrollingRowIndex += dgv.DisplayedRowCount(false);
}
else
{
dgv.FirstDisplayedScrollingRowIndex = dgv.Rows.Count - 1;
}

}

关于c# - Datagridview FirstDisplayedScrollingRowIndex 在网格底部不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820276/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com