我有一个DataGridView,我正在听它的Scroll事件.这给了我一个ScrollEventArgs对象,其Type成员应该告诉我已经发生的滚动事件的类型.在MSDN文档页面上,它说我应该能够通过侦听ThumbPosition,ThumbTrack,First,Last和EndScroll类型的事件来检测滚动框的移动.
但是,当我拖动滚动框时,我只获得LargeDecrement和LargeIncrement类型的事件.
如何访问ThumbPosition,ThumbTrack,First,Last和EndScroll事件?
using System.Reflection; using System.Windows.Forms; bool addScrollListener(DataGridView dgv) { bool ret = false; Type t = dgv.GetType(); PropertyInfo pi = t.GetProperty("VerticalScrollBar", BindingFlags.Instance | BindingFlags.NonPublic); ScrollBar s = null; if (pi != null) s = pi.GetValue(dgv, null) as ScrollBar; if (s != null) { s.Scroll += new ScrollEventHandler(s_Scroll); ret = true; } return ret; } void s_Scroll(object sender, ScrollEventArgs e) { // Hander goes here.. }
正如您所期望的,如果您想要收听水平滚动事件,可以将"VerticalScrollBar"更改为"HorizontalScrollBar"