我有一个程序,它使用 dataGridView 来显示通过向 dataGridView 添加行来每秒自动更新的数据。
当我想在开头阅读一些内容时,我会向上滚动,即使数据更新,滚动条也不会向下滚动,这很好。但我希望滚动条仅在位于 dataGridView 底部时才向下滚动。
将新行添加到文本时我想要的行为:
如果滚动条在底部,则自动向下滚动。
如果滚动条在其他地方,则不要滚动。
我为此编写的代码不幸的是不起作用:
private void liveDataTable_Scroll(object sender, ScrollEventArgs e)
{
ScrollPosition = liveDataTable.FirstDisplayedScrollingRowIndex;
if (ScrollPosition == liveDataTable.RowCount - 1)
{
IsScrolledToBottom = true;
}
else
{
IsScrolledToBottom = false;
}
}
public void AddRowToDataGridMethod()
{
dataTable.Rows.Add();
if (dataWin.IsScrolledToBottom == true)
dataWin.LiveDataTable.FirstDisplayedScrollingRowIndex = (dataWin.ScrollPosition + 1);
else
dataWin.LiveDataTable.FirstDisplayedScrollingRowIndex = dataWin.ScrollPosition;
}
你可以试试这个:
int firstDisplayed = liveDataTable.FirstDisplayedScrollingRowIndex;
int displayed = liveDataTable.DisplayedRowCount(true);
int lastVisible = (firstDisplayed + displayed) - 1;
int lastIndex = liveDataTable.RowCount - 1;
liveDataTable.Rows.Add(); //Add your row
if(lastVisible == lastIndex)
{
liveDataTable.FirstDisplayedScrollingRowIndex = firstDisplayed + 1;
}
因此,基本上检查最后一行是否可见,以及添加新行后是否向下滚动 1 行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)