作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 DataGridView,我正在监听它的 Scroll 事件。这给了我一个 ScrollEventArgs 对象,其 Type 成员应该告诉我发生的滚动事件的类型。在 the MSDN documentation page它说我应该能够通过监听类型为 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”
关于c# - 如何从 DataGridView 接收 "scroll box"类型的滚动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472389/
我是一名优秀的程序员,十分优秀!