在c1flexgrid中画线,拖动滚动条时,绘制的线条串位
在c1flexgrid中绘制的线条,拖动横向滚动条时,超出控件范围绘制的线条就会串位,请问该如何解决呢?Private Sub Fg_OwnerDrawCell(sender As Object, e As OwnerDrawCellEventArgs) Handles Fg.OwnerDrawCell
With Fg
e.Graphics.DrawLine(Pens.Red, .Cols(5).Left, .Rows(1).Top, .Cols(5).Left, .Rows(.Rows.Count - 1).Bottom)
e.Graphics.DrawLine(Pens.Red, .Cols(10).Left, .Rows(1).Top, .Cols(10).Left, .Rows(.Rows.Count - 1).Bottom)
e.Graphics.DrawLine(Pens.Red, .Cols(15).Left, .Rows(1).Top, .Cols(15).Left, .Rows(.Rows.Count - 1).Bottom)
e.Graphics.DrawLine(Pens.Red, .Cols(18).Left, .Rows(1).Top, .Cols(18).Left, .Rows(.Rows.Count - 1).Bottom)
End With
End Sub
OwnerDrawCell本意上是为了渲染当前的单元格,在每个单元格需要渲染的时候都会触发。
e里面就是包含了要渲染的单元格的相关信息
相关位置也应该是通过e.Bounds来获取
按照你的代码,你是想去设置5,10······这些列的左边框,应该这样写
If e.Col = 5 Then
e.Graphics.DrawLine(Pens.Red, e.Bounds.Left, e.Bounds.Top, e.Bounds.Left, e.Bounds.Bottom)
ElseIf e.Col = 10 Then
e.Graphics.DrawLine(Pens.Red, e.Bounds.Left, e.Bounds.Top, e.Bounds.Left, e.Bounds.Bottom)
End If 麻烦提供一个复现问题的demo,我们来协助调查一下原因
两张图片,下边的是正常加载后的,上边的是移动横向滚动条后的样式 收到,调查后会回回复结果 Richard.Ma 发表于 2024-5-20 12:30
收到,调查后会回回复结果
好的,谢谢 Richard.Ma 发表于 2024-5-21 10:15
OwnerDrawCell本意上是为了渲染当前的单元格,在每个单元格需要渲染的时候都会触发。
e里面就是包含了要渲 ...
太感谢了,问题解决了:victory: 不客气
页:
[1]