2009-07-17 5 views
2

premier poste, mais à long navigateur temps :)DataGridView CellPainting ne fonctionne pas entièrement sur Scroll

Alors, voici mon problème: En fait, j'ai un datagridview que j'utilise pour interagir avec l'utilisateur. Dans toutes les lignes, il y a un bouton "info" qui donne l'illusion qu'il ajoute une autre ligne en dessous avec toutes les cellules fusionnées (une cellule longue sur toute la ligne) et dessine le texte et les images décrivant la ligne au dessus sur la "cellule d'information".

Cela fonctionne très bien sauf lorsque la vue de données est défilée verticalement, il apparaît alors que la peinture n'est pas appelée et que la grille est fouillée. Des idées?

Voici un aperçu de base du code:

private void grid_CellPainting(object sender, DataGridViewCellPaintingEventArgs e){  
    // Loop through and draw all of the open information rows 
    foreach (int i in openInfoCells) { 
     if (i >= grid.FirstDisplayedCell.RowIndex && 
      i <= (grid.DisplayedRowCount(true) + grid.FirstDisplayedCell.RowIndex)) { 

      // Draw Rectangle 
      .... 

      // Draw Text or Image 
      .... 
     } 
    } 
} 

Répondre

2

figured it out. Nécessaire pour créer un double tampon pour la datagridview en procédant comme suit:

class CustomDataGridView : DataGridView { 

public CustomDataGridView() { 
    base.DoubleBuffered = true; 
} 
} 

J'ai aussi mis le code dans l'événement RowPostPainting et changé l'instruction if:

if (e.RowIndex == i) { .... } 

Espérons que cela aide quelqu'un d'autre à .

Questions connexes