お世話になります。
現在、DataGridViewのセルを結合する処理を検討しています。
その中で、DataViewRowのRowPostPaintをハンドリングし、セルの背景の描画とTextの描画をするところまでは
できたのですが、DataGridViewをスクロールしたところ、描画がうまくいかなくなりました。
具体的には、スクロールをした際に描画しているTextの残像が残るような現象が発生しました。
ただし、上記の現象が発生した場合でも、列ヘッダでのソート等を行うと、描画が正常になります。
Private Sub DataGridView1_RowPostPaint(sender As System.Object, e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) Handles DataGridView1.RowPostPaint
If e.RowIndex < 0 Then
Return
End If
Dim dv As DataGridView = DirectCast(sender, DataGridView)
Dim rect As Rectangle
Dim cell As DataGridViewCell
' 1列目の処理
cell = dv(1, e.RowIndex)
rect = e.RowBounds
If cell.ColumnIndex = 1 Then
Using brush As New SolidBrush(dv.DefaultCellStyle.BackColor)
e.Graphics.FillRectangle(brush, rect)
Using pen As New Pen(dv.GridColor)
e.Graphics.DrawRectangle(pen, rect)
End Using
End Using
TextRenderer.DrawText(e.Graphics, "aaaa", dv.DefaultCellStyle.Font, rect, dv.DefaultCellStyle.ForeColor, TextFormatFlags.Left + TextFormatFlags.VerticalCenter)
End If
End Sub
上記のコードで初期の表示はできるのですが、スクロールした際に、描画がうまくいきません。
回避策などありましたらお教え願います。