DataGridView:仅当滚动位于底部时自动向下滚动

ole*_*oro 5 c# datagridview scrollbar

我有一个程序,它使用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;         
 }
Run Code Online (Sandbox Code Playgroud)

MAV*_*MAV 12

你可以试试这个:

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;
}
Run Code Online (Sandbox Code Playgroud)

因此,基本上检查最后一行是否可见,以及在添加新行后是否向下滚动1行.