title: datagridview Scroll event not firing when scrolling using keyboard
body: <p>I am trying to capture the moment when a user ends horizontal scrolling in a datagridview. I need this to reposition buttons in the grid's header.</p>
  
  <p>What I have done so far is adding a scrollListener which I found on this link: <a href="https://stackoverflow.com/questions/472389/how-can-i-receive-the-scroll-box-type-scroll-events-from-a-datagridview/767603#767603">How can I receive the &quot;scroll box&quot; type scroll events from a DataGridView?</a></p>
  
  <p>This works very well, exept that scrolling using the keyboard does not fires the scroll event. When I hoover the mouse in my code over the Scroll event it states "Occurs when the scroll box has been moved by either a mouse or keyboard action". So the event should fire when scrolling with the keyboard, but it does not.</p>
  
  <p>My code is this :  </p>
  
  <pre><code>    bool addScrollListener(DataGridView dgv)
      {
          // capture horizonal scrolling and redirect to s_Scroll. Purpose is to redraw buttons after scrolling
          bool Result = false;
  
          Type t = dgv.GetType();
          PropertyInfo pi = t.GetProperty("HorizontalScrollBar", 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);
  
              Result = true;
          }
  
          return Result;
      }
  
      void s_Scroll(object sender, ScrollEventArgs e)
      {
          // if grid is done scrolling horizontal, than redraw our buttons
          if (e.Type == ScrollEventType.EndScroll)
          {
              // code works well, but only get here when scrolling with mouse
              PositionButtons();
          }
      }
  </code></pre>
  
  <p>So my problem is that when the user scrolls using the mouse the s_Scroll event is fired, but when scrolling using the keyboard the s_Scroll event is not fired at all.</p>
  
  <p>My question is how do I fix this so the event gets fired in both cases,
  and if that is not possible is there another way to capture the end of a horizontal scroll from a datagridview.</p>