DataGridView的ScrollEventType.EndScroll

时间:2009-12-21 08:59:27

标签: winforms datagridview

如何在dataGridView的Sroll事件处理程序方法中获取ScrollEventType.EndScroll?

void dgvMapper_Scroll(object sender, ScrollEventArgs e)    
{        
    if (e.Type == ScrollEventType.EndScroll) {}     
}

1 个答案:

答案 0 :(得分:1)

DGV中的大多数垂直滚动都是因为用户正在输入数据行或按键盘上的上/下箭头键。对此没有“结束滚动”动作。如果这不是问题,您可以使用以下代码检测用户直接操作滚动条:

using System;
using System.Windows.Forms;

class MyDataGridView : DataGridView {
    public event EventHandler EndScroll;

    protected void OnEndScroll(EventArgs e) {
        EventHandler handler = EndScroll;
        if (handler != null) 
            handler(this, EventArgs.Empty);
    }

    protected override void WndProc(ref Message m) {
        base.WndProc(ref m);
        if (m.Msg == 0x115) {
            if ((ScrollEventType)(m.WParam.ToInt32() & 0xffff) == ScrollEventType.EndScroll) {
                OnEndScroll(EventArgs.Empty);
            }
        }
    }
}

将其粘贴到新类中。编译。将新控件从工具箱顶部拖放到表单上。