подключение событий к вертикальной полосе прокрутки верхним стрелкам и стрелкам вниз в виде сетки данных с помощью c # - PullRequest
1 голос
/ 14 октября 2011

У меня есть такой вид таблицы данных .... на изображении ниже это хорошо работает ...

Мне нужно подключить событие в вертикальной боковой панели ..

iзначит, если я нажму на верхнюю стрелку на полосе прокрутки, я хочу что-то сделать ...

Если я нажму на стрелку вниз на этой полосе прокрутки, я хочу что-то сделать ...

Чтобы быть более точным, я хочу получить идентификатор первой верхней записи, когда я нажимаю на верхнюю стрелку в вертикальной полосе прокрутки ..

Как я могу это сделать ..., я использую winforms

Может ли кто-нибудь помочь с этим ...

Заранее большое спасибо enter image description here

Я нашел это, но я не знаю, как реализовать это на своей странице

 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);это не входит в это событие ...

Может ли кто-нибудь помочь с этим ...

1 Ответ

0 голосов
/ 14 октября 2011

Вы должны быть в состоянии использовать код, который вы опубликовали.Все, что вам нужно сделать, это вызвать addScrollListener куда-нибудь (например, в вашем конструкторе после InitializeComponent)

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

  // addScrollListener code goes here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...