ListView似乎不支持滚动事件。每当滚动列表时,我都需要调用一个函数;我该怎么做呢?
发布于 2008-12-17 19:50:50
为什么在滚动列表时需要调用函数?
如果您要在滚动时更改项目,我建议您将listview设置为virtual。
或者,您可以覆盖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();
}
}
发布于 2010-08-05 21:03:13
似乎最好的方法是布莱恩的解决方案。然而,它只响应由滚动条生成的事件,而不响应来自鼠标中键的事件。
如果更改条件:
if (m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL)
this.OnScroll();
出自:
if (m.Msg == 0x000c2c9)
this.OnScroll();
现在,它在listview中的所有滚动事件中进行响应。
https://stackoverflow.com/questions/372034
复制相似问题