首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ListView中收听滚动?

如何在ListView中收听滚动?
EN

Stack Overflow用户
提问于 2008-12-16 17:30:33
回答 2查看 13.7K关注 0票数 2

ListView似乎不支持滚动事件。每当滚动列表时,我都需要调用一个函数;我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-12-17 19:50:50

为什么在滚动列表时需要调用函数?

如果您要在滚动时更改项目,我建议您将listview设置为virtual。

或者,您可以覆盖listview并执行以下操作:

代码语言:javascript
复制
public class TestListView : System.Windows.Forms.ListView
{
    private const int WM_HSCROLL = 0x114;
    private const int WM_VSCROLL = 0x115;
    public event EventHandler Scroll;

    protected void OnScroll()
    {

        if (this.Scroll != null)
            this.Scroll(this, EventArgs.Empty);

    }

    protected override void WndProc(ref System.Windows.Forms.Message m)
    {
        base.WndProc(ref m);
        if (m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL)
            this.OnScroll();
    }
}
票数 6
EN

Stack Overflow用户

发布于 2010-08-05 21:03:13

似乎最好的方法是布莱恩的解决方案。然而,它只响应由滚动条生成的事件,而不响应来自鼠标中键的事件。

如果更改条件:

代码语言:javascript
复制
   if (m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL) 
             this.OnScroll();

出自:

代码语言:javascript
复制
   if (m.Msg == 0x000c2c9) 
             this.OnScroll();

现在,它在listview中的所有滚动事件中进行响应。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/372034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档