如何检测滚动条何时到达数据网格视图的末尾
本文关键字:网格 数据网 数据 视图 何检测 检测 何时 滚动条 | 更新日期: 2023-09-27 18:27:25
我想检测滚动条何时到达数据网格视图的末尾,这样我就可以在发生这种情况时运行一个函数。
我正在探索Scroll
活动,但没有成功。
谢谢。
这应该会让你接近。。。把它放在Scroll
事件中,它会告诉你最后一行何时可见:
int totalHeight = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)
totalHeight += row.Height;
if (totalHeight - dataGridView1.Height < dataGridView1.VerticalScrollingOffset)
{
//Last row visible
}
这里有另一种方法…
private void dataGrid_Scroll(object sender, ScrollEventArgs scrollEventArgs)
{
if (dataGrid.DisplayedRowCount(false) +
dataGrid.FirstDisplayedScrollingRowIndex
>= dataGrid.RowCount)
{
// at bottom
}
else
{
// not at bottom
}
}
这是一个替代解决方案:
每次移动滚动条时都会运行滚动事件。根据您的使用情况,这可能会导致问题或性能不佳。因此,更好的方法是只有当用户通过处理EndScroll
事件释放滚动条时才运行检查和函数。
但是,您必须使用LINQ来访问datagridview's
ScrollBar
控件,并设置如下事件处理程序:
using System.Linq;
public MyFormConstructor()
{
InitializeComponent();
VScrollBar scrollBar = dgv.Controls.OfType<VScrollBar>().First();
scrollBar.EndScroll += MyEndScrollEventHandler;
}
private void MyEndScrollEventHandler(object sender, ScrollEventArgs e)
{
if (dgv.Rows[dgv.RowCount - 1].Displayed){ // Check whether last row is visible
//do something
}
}