如何为ListView制作滚动事件

Ana*_*kez 1 c# listview winforms

我想在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)

为鼠标滚轮和键盘上/下按钮触发滚动事件需要什么常量?

SwD*_*n81 5

鼠标滚轮m.Msg值应为:

private const int WM_MOUSEWHEEL = 0x020A;
Run Code Online (Sandbox Code Playgroud)

  • 大.多么奇迹 (2认同)