2011-10-14 1 views
1

У меня есть вид DataGrid, как это .... в скрине хорошо то будет отлично работает ...подключения события к вертикальной полосы прокрутки верхней стрелки и вниз стрелки в виде сетки данных с помощью C#

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

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

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

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

Как я могу это сделать ..., я использую 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 + = новый ScrollEventHandler (s_Scroll); это не входит в это событие ...

бы любой пожалуйста помощь на этом ...

+0

Вы можете в конечном итоге создать свой собственный бар пользовательских прокрутки ... Я не думаю, что для Windows предоставляет эти типы событий. – qJake

+0

@SpikeX Я использую код выше, но не знаю, как начать ... –

+0

Этот код не будет работать. Это событие, когда вся сетка прокручивается, а не когда вы специально нажимаете одну из стрелок вверх или вниз. – qJake

ответ

0

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

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

    // addScrollListener code goes here 
+0

Он хочет отдельные события, когда вы прокручиваете вверх или прокручиваете вниз, так что просто добавьте прослушиватель прокрутки не делает того, что хочет. – qJake

+0

вы бы посмотрели мой modedied код .... и это событие не стреляет ... –

Смежные вопросы