如何在ListView中监听滚动?

Sim*_*mon 1 c# listview winforms

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

Bri*_*lph 6

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

如果您在滚动时更改项目,我建议将listview设置为虚拟.

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

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();
    }
}
Run Code Online (Sandbox Code Playgroud)