2010-10-05 16 views
9

Deseo saber si un usuario está desplazando el DataGridView.Cómo saber si el usuario está desplazando la vista de cuadrícula de datos

Mientras el usuario está desplazando el DataGridView, deseo suspender un hilo en ejecución y reanudar este hilo tan pronto como el usuario deje de desplazarse.

Cualquier ayuda será muy apreciada de corazón.

Muchas gracias :)

actualización:

Por mi trabajo con respecto a este, el código está aquí: - Updating DataGridView via a thread when scrolling

+0

1 Nunca he necesitado para actuar en eventos de desplazamiento hasta el momento, pero si lo hago algún día, su pregunta es probable que ser útil dada su respuesta (s). –

Respuesta

2
public class DataGridViewEx : DataGridView 
    { 
     private const int WM_HSCROLL = 0x0114; 
     private const int WM_VSCROLL = 0x0115; 
     private const int WM_MOUSEWHEEL = 0x020A; 

     public event ScrollEventHandler ScrollEvent; 
     const int SB_HORZ = 0; 
     const int SB_VERT = 1; 
     public int ScrollValue; 
     [DllImport("User32.dll")] 
     static extern int GetScrollPos(IntPtr hWnd, int nBar); 
     protected override void WndProc(ref Message m) 
     { 
      base.WndProc(ref m); 
      if (m.Msg == WM_VSCROLL || 
       m.Msg == WM_MOUSEWHEEL) 
       if (ScrollEvent != null) 
       { 
        this.ScrollValue = GetScrollPos(Handle, SB_VERT); 
        ScrollEventArgs e = new ScrollEventArgs(ScrollEventType.ThumbTrack, ScrollValue); 
        this.ScrollEvent(this, e); 
       }    
     } 
    } 

Haz tu código para suspender Manejador del evento ScrollEvent

+0

Gracias por su respuesta. He votado a favor y en contra. Pero soy un codificador novato y no he podido encontrar dónde agregar este código. Ayuda amablemente ... Aquí está mi código: http://stackoverflow.com/questions/3766784/problem-in- update-datagridview-via-a-thread-when-scrolling. Por favor, hágame saber dónde implementar este código y si puede proporcionar una demostración sería genial ...... –

+1

Necesita crear una nueva clase en su proyecto y pegarlo mi fragmento de código. Luego, en el diseñador de su formulario DataGridView datagrid = new DataGridView(); debe escribir a continuación: DataGridView datagrid = new DataGridViewEx(); – zabulus

3

favor ver aquí, este es un ejemplo usando un ListView pero se puede adaptar fácilmente a DataGridView.

ListView onScroll event

+0

+1 ¡He aprendido algo nuevo hoy dado tu enlace! –

+0

Gracias por su respuesta. He votado a favor y en contra. Pero soy un codificador novato y no he podido encontrar dónde agregar este código. Ayuda amablemente ... Aquí está mi código: http://stackoverflow.com/questions/3766784/problem-in- update-datagridview-via-a-thread-when-scrolling. Por favor, hágame saber dónde implementar este código y si puede proporcionar una demostración sería genial ... –

Cuestiones relacionadas