在DataGridView中滚动会导致覆盖文本

时间:2017-08-03 10:06:55

标签: c# winforms datagridview scroll

我有一个带有文本和图像的可滚动DataGridView。但如果它包含更多行,那么适合屏幕滚动无法正常工作。如果滚动应隐藏的文本部分仍保留在新文本的顶部。因此,我的DataGridView的顶部和底部包含彼此重叠的双重文本。中间部分很好。但是。

enter image description here

创建视图后,我调整了文本大小和单元格大小。这可能是问题所在。老实说,我真的不知道从哪里开始寻求解决方案。我唯一想到的就是在滚动事件上尝试重新绘制。我试过这个similar issue,但它没有为我解决。我也看到很多人如果他们在datagridview中绘画有问题,但我没有(所以请不要将此标记为其中一个问题的副本)。我没有写这部分代码,但是通过在dgvAlarms_CellFormatting中的DataGridViewCellFormattingEventArgs.Value中设置它来传递图片。

当我尝试制作DoubleBuffered时,除了标题和DataGridView中的图像(我在最后一张图片中剪下)之外的所有内容都变为黑色,如下所示: enter image description here

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

好的,我在评论中添加了TaW的anwser并添加

    e.CellStyle.BackColor = Color.White;
    e.CellStyle.SelectionBackColor = Color.White;

到CellFormatting方法的开头。 有趣的是,如果你使用双缓冲区,backgroundcolor会被设置为黑色,但如果我不这样做,则会保持白色(就像我定义的那样)。