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) { .... }
希望这有助于其他人。