C#中的滚动事件

Posted

技术标签:

【中文标题】C#中的滚动事件【英文标题】:Scroll Event in C# 【发布时间】:2010-10-24 11:00:27 【问题描述】:

假设我有一个DataGridView 控件,它显示指定表的大约 100 条记录。每次用户向下滚动到最低点时,我都想在我的 DataGridView 后面的 DataSet 添加另外 100 条记录。

我知道 DataGridView 控件有一个类似 private void DataGridView_Scroll(object sender, ScrollEventArgs e) 的滚动事件,并且ScrollEventArgs 给了我ScrollOrientationScrollEventType。但是我如何准确地确定滚动到达滚动条末端的确切时间?

Tnks。

【问题讨论】:

【参考方案1】:

每个 DataGridViewRow 都有一个“Displayed”属性,指示该行当前是否显示在屏幕上。因此,您可以这样做:

if(this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 1].Displayed)

   //last rows is displayed, do what you gotta do

【讨论】:

不完全是我的想法(因为即使滚动按钮还没有到达滚动条的末尾,最后一行也可以看到),但它解决了我的问题。除非有人在接下来的 5 分钟内提出更好的想法,否则我会将您的帖子标记为答案。谢谢。【参考方案2】:

听起来你可能想看看"virtual mode"。数据绑定的工作方式不同,但它非常适合延迟数据获取。

【讨论】:

我看不到 Virtual Mode 属性如何帮助我...我只需要找出用户何时向下滚动到最后一条记录DataGridView. 因为当您滚动时,它会要求您提供更多数据...这不正是您想要实现的吗? 我现在明白你的意思了。如果这是我想要实现的,那么,不完全是。就在我将在 DataGridView 中添加更多数据之前,我想显示一个 MessageBox,并且可能会做更多的事情,所有这些都恰好在滚动按钮到达滚动条末尾时。不过,有趣的想法是,对于具有更好应用程序设计的案例,我会牢记这一点。谢谢。【参考方案3】:

使用 DataReadear 读取一些记录。然后在 DataGridView 的 Scroll 事件中,检查属性 FirstDisplayedScrollingRowIndex 是否接近加载的记录数,再次使用 DataReader 获取另一串行等等。

【讨论】:

以上是关于C#中的滚动事件的主要内容,如果未能解决你的问题,请参考以下文章

C# 中的 progressBar1 如何使用这个进度条控件.?

滚动条时的C#复选框标题问题

C# 对Panel设置Mouseclick事件 4RadioButton触发跳出Messagebox

禁用 RichTextBox 中的滚动(c#)

javascript-如何检测 iframe 中的滚动事件?

c# MouseWheel Scroll 和 RTB VScroll 事件