DataGridView CellPainting不能完全在Scroll上工作

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

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

弄清楚了。 需要通过执行以下操作为datagridview创建双缓冲区:

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

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

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

希望这有助于其他人。