1

我有一个像这样的数据网格视图....在下面的图片中,效果很好......

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

我的意思是,如果我单击滚动条中的上箭头,我想做某事...

如果我单击该滚动条中的向下箭头,我想做一些事情......

更具体地说,当我单击垂直滚动条中的上箭头时,我想获取第一个上记录的 id。

我该怎么做...,我正在使用winforms

有人可以帮忙吗....

提前谢谢了在此处输入图像描述

我找到了这个,但我不知道如何在我的页面中实现它

 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..
 }

我做过这样的...

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);

            }
            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); 它不会进入这个事件......

有人可以帮忙吗...

4

1 回答 1

0

您应该能够使用您发布的代码。您需要做的就是addScrollListener在某个地方调用(例如在您的构造函数 after 中InitializeComponent

  public Form1()
  {
     InitializeComponent();
     // Replace dataGridView1 with the name of your DataGridView
     addScrollListener(dataGridView1);  
  }

  // addScrollListener code goes here
于 2011-10-14T16:31:18.763 回答