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)
的滚动事件,并且ScrollEventArg
s 给了我ScrollOrientation
和ScrollEventType
。但是我如何准确地确定滚动到达滚动条末端的确切时间?
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# 对Panel设置Mouseclick事件 4RadioButton触发跳出Messagebox