DataGridView CellPainting不能完全在Scroll上工作

时间:2009-07-17 15:40:47

标签: c# datagridview

第一篇文章,但长时间浏览器:)

所以这是我的问题:基本上我有一个用于与用户交互的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
            ....
        }
    }
}

1 个答案:

答案 0 :(得分:2)

想出来。需要通过执行以下操作为datagridview创建双缓冲区:

class CustomDataGridView : DataGridView {

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

我还将代码放入RowPostPainting事件,并将if语句更改为:

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

希望这有助于其他人。