Declare some constants:private const int WM_SCROLL = 276; // Horizontal scrollprivate const int WM_VSCROLL = 277; // Vertical scrollprivate const int SB_LINEUP = 0; // Scrolls one line upprivate const int SB_LINELEFT = 0;// Scrolls one cell leftprivate const int SB_LINEDOWN = 1; // Scrolls one line downprivate const int SB_LINERIGHT = 1;// Scrolls one cell rightprivate const int SB_PAGEUP = 2; // Scrolls one page upprivate const int SB_PAGELEFT = 2;// Scrolls one page leftprivate const int SB_PAGEDOWN = 3; // Scrolls one page downprivate const int SB_PAGERIGTH = 3; // Scrolls one page rightprivate const int SB_PAGETOP = 6; // Scrolls to the upper leftprivate const int SB_LEFT = 6; // Scrolls to the leftprivate const int SB_PAGEBOTTOM = 7; // Scrolls to the upper rightprivate const int SB_RIGHT = 7; // Scrolls to the rightprivate const int SB_ENDSCROLL = 8; // Ends scrollAdd a using referenceusing System.Runtime.InteropServices;Declare external SendMessage:[DllImport("user32.dll",CharSet=CharSet.Auto)]private static extern int SendMessage(IntPtr hWnd, int wMsg,IntPtr wParam, IntPtr lParam);Usage: If you have some textbox on the form...SendMessage( Control Handle , WM Scroll Message, (IntPtr) Scroll Command ,IntPtr.Zero);Scroll page upSendMessage(textBox1.Handle,WM_VSCROLL,(IntPtr)SB_PAGEUP,IntPtr.Zero);Scroll page downSendMessage(textBox1.Handle,WM_VSCROLL,(IntPtr)SB_PAGEDOWN,IntPtr.Zero);
The DataGridView control has 2 sub-controls, a VScrollBar and a HScrollBar. If you want to do a scroll over a DataGridView you have to send the WM_VSCROLL or WM_HSCROLL message to the DataGridView handle, with wParam as the SB_xxxx value you want, and lParam as the scrollbar handle.
Example: public void ScrollControlDown(DataGridView dataGridView) { VScrollBar barraVertical = null; foreach (Control c in dataGridView.Controls) { if (c is VScrollBar) barraVertical = (VScrollBar)c; } if (barraVertical != null) { SendMessage(dataGridView.Handle, WM_VSCROLL, (IntPtr)SB_LINEDOWN, barraVertical.Handle); SendMessage(dataGridView.Handle, WM_VSCROLL, (IntPtr)SB_ENDSCROLL, barraVertical.Handle); } } This method requires the DataGridView's ScrollBars property shows the scrollbar over you are going to do the programatical scroll. If you want to send WM_VSCROLL, ScrollBars property must be set to Both or Vertical. If you want to send WM_HSCROLL, ScrollBars propery must be set to Both or Horizontal.