我想检测滚动条何时到达数据网格视图的末尾,这样我就可以在发生这种情况时运行一个函数。
我正在探索Scroll
事件,但没有成功。
感谢。
答案 0 :(得分:4)
这应该让你关闭...将它放在你的Scroll
事件中它会告诉你最后一行何时可见:
int totalHeight = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)
totalHeight += row.Height;
if (totalHeight - dataGridView1.Height < dataGridView1.VerticalScrollingOffset)
{
//Last row visible
}
答案 1 :(得分:1)
这是另一种方式...
private void dataGrid_Scroll(object sender, ScrollEventArgs scrollEventArgs)
{
if (dataGrid.DisplayedRowCount(false) +
dataGrid.FirstDisplayedScrollingRowIndex
>= dataGrid.RowCount)
{
// at bottom
}
else
{
// not at bottom
}
}
答案 2 :(得分:0)
这是另一种解决方案:
滚动事件在每次移动滚动条时运行。根据您的使用情况,这可能会导致issues的性能下降。因此,更好的方法是仅在用户通过处理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
}
}