2009-07-17 21 views
2

最初の投稿に動作しないのDataGridView CellPaintingが、長い時間のブラウザ:)完全にスクロール

だからここに私の問題だ:基本的に私は、ユーザーと対話するために使用していますDataGridViewのを持っています。すべての行には、「情報」ボタンがあり、その下に別の行が追加され、すべてのセルがマージされ(行全体に1つの長いセル)、その上に行を記述するテキストとイメージが描画されます「情報セル」に表示されます。

これは、datagridviewが垂直方向にスクロールされている場合を除いて素晴らしいことです。次に、ペイントが呼び出されず、グリッドが見えなくなっているように見えます。何か案は?ここで

は、コードの基本的なアウトラインです:

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 
      .... 
     } 
    } 
} 

答えて

2

はそれを考え出しました。実行してDataGridViewのためにダブルバッファを作成するために必要な以下:私もRowPostPaintingイベントにコードを入れて、if文に変更

class CustomDataGridView : DataGridView { 

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

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

はうまくいけば、このうち他の誰かに役立ちます。