在数据网格视图中没有引发垂直滚动条事件

本文关键字:垂直 滚动条 事件 数据网 数据 网格 视图 | 更新日期: 2023-09-27 18:11:18

我有一个像这样的数据网格视图....在下图中,这很好地工作了…

我需要在垂直侧边栏中连接一个事件…

我的意思是如果我点击滚动条上箭头我想做点什么。

更具体地说,我想获得第一个上层记录id的id时,我点击上箭头在垂直滚动条..

 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;
}
private void s_Scroll(object sender, ScrollEventArgs e)
{
    if (e.ScrollOrientation == ScrollOrientation.VerticalScroll)
    {
        if (e.Type == ScrollEventType.ThumbPosition)
        {
            if (e.Type == ScrollEventType.SmallIncrement)
            {
                int i = dgvMembers.FirstDisplayedScrollingRowIndex;
                int idemebers =Convert.ToInt32(dgvMembers.Rows[i].Cells["Id"].Value.ToString());
                getMemberInfo(i, idemebers); // i want to the details of selected record into text boxes 
            }
            if (e.Type == ScrollEventType.SmallDecrement)
            {
                int i = dgvMembers.FirstDisplayedScrollingRowIndex;
                int idemebers = Convert.ToInt32(dgvMembers.Rows[i].Cells["Id"].Value.ToString());
                getMemberInfo(i, idemebers);
            }
        }
    }   
} 

但此事件不触发

s.Scroll += new ScrollEventHandler(s_Scroll);

它不进入这个事件…

有谁能帮帮我吗?

提前致谢

在数据网格视图中没有引发垂直滚动条事件

尝试使用DataGridView。滚动事件。

更具体地说,我想获得第一个上层记录id的id时,我点击上箭头在垂直滚动条

DataGridView.Scroll事件处理程序中,您可以这样做(上面的箭头被认为是一个小减量:

if (e.ScrollOrientation == ScrollOrientation.VerticalScroll
    && e.Type == ScrollEventType.SmallDecrement)
{
    int i = dgvMembers.FirstDisplayedScrollingRowIndex;
    // your code to process the first displayed row here
}