是的,就是这样。微软没有给ListView加上Scroll事件。这已经作为一项意见提交给了微软,在dotNET v2.0里面有望加上Scroll事件。
不过现在我们怎么办?
我们现在只能自己动手,丰衣足食了。
例子代码:
class MyListView : ListView
{
public event EventHandler HScroll;
public event EventHandler VScroll;
MyListView()
{
this.HScroll += new EventHandler(OnHScroll);
this.VScroll += new EventHandler(OnVScroll);
}
const int WM_HSCROLL = 0x0114;
const int WM_VSCROLL = 0x0115;
protected override void WndProc(ref Message m)
{
if(m.Msg == WM_HSCROLL)
{
OnHScroll(this, new EventArgs());
}
else if(m.Msg == WM_VSCROLL)
{
OnVScroll(this, new EventArgs());
}
base.WndProc (ref m);
}
virtual protected void OnHScroll(object sender, EventArgs e)
{
}
virtual protected void OnVScroll(object sender, EventArgs e)
{
}
}
微软未给ListView添加Scroll事件,此问题已反馈,有望在dotNET v2.0中解决。当下需自行实现,文中给出示例代码,通过自定义类MyListView,重写WndProc方法处理水平和垂直滚动消息。
794

被折叠的 条评论
为什么被折叠?



