第一篇文章,但长时间浏览器:)
所以这是我的问题:基本上我有一个用于与用户交互的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
....
}
}
}
答案 0 :(得分:2)
想出来。需要通过执行以下操作为datagridview创建双缓冲区:
class CustomDataGridView : DataGridView {
public CustomDataGridView() {
base.DoubleBuffered = true;
}
}
我还将代码放入RowPostPainting事件,并将if语句更改为:
if (e.RowIndex == i) { .... }
希望这有助于其他人。