ListView 似乎不支持 Scroll 事件。每当滚动列表时,我都需要调用一个函数;我该怎么做呢?
Simon
问问题
13746 次
2 回答
6
为什么滚动列表时需要调用函数?
如果您在滚动时更改项目,我建议将列表视图设置为虚拟。
或者您可以覆盖列表视图并执行以下操作:
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();
}
}
于 2008-12-17T19:50:50.283 回答
4
似乎最好的方法是布赖恩的解决方案。但是,它只响应滚动条生成的事件,而不响应来自鼠标中键的事件。
如果您更改条件:
if (m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL)
this.OnScroll();
经过:
if (m.Msg == 0x000c2c9)
this.OnScroll();
现在它响应列表视图中的所有滚动事件。
于 2010-08-05T13:03:12.527 回答