title: DataGridView doesn't call Paint method when InvalidateCell is called
body: <p>This a WinForm C# application problem.</p>
  
  <p>I have a DataGridView and I need a customized type of DataGridViewColumn such that when my mouse is over a cell on that column, the cell paints something special on it. I found <a href="http://msdn.microsoft.com/en-us/library/7fb61s43.aspx" rel="nofollow noreferrer">a way</a> of overriding the DataGridViewTextBoxCell to do the painting myself. That article shows an example of implementing a roll-over cell such that when you move your mouse over a cell, it paints a red rectangle around the bounders of itself.</p>
  
  <p>If you see the example, you will find out that the way the example fills data is directly create rows to the grid. When I use data binding rather than direct row fill, I find that the cells will not paint themselves at the beginning. Actually, you have to select a cell first, then all the cells on that row will paint correctly. If you don't select a cell of a row, all the cells on that row will not paint accordingly when the mouse is over them.</p>
  
  <p>I think this is some kind of optimization of the grid such that when you select a cell, the underlying object of that row is activated and the grid will call Paint method when InvlidateCell method is call. But if the underlying object of a row is not activated, the grid will just paint the cells by default method to save time.</p>
  
  <p>Obviously, I need not the optimization but the slow way. It doesn't matter in my case because my data on that grid never get too big. How can I achieve it? I try to call grid.Refresh() after the data is bound to the grid but that doesn't help.</p>
  
  <p>Thank you for your suggestion.</p>
  
  <p>Ji</p>