我想在Krypton Toolkit Panel控件的中间画一条线但是没有绘制线。
我在这里尝试了两个灵魂:draw line on panel not showing up
而且:
Public Class Form1
Private Sub KryptonPanel1_Paint(sender As Object, e As PaintEventArgs) _
Handles KryptonPanel1.Paint
Using p As New Pen(Brushes.YellowGreen)
e.Graphics.DrawLine(p, sender.Width \ 2, 0, sender.Width \ 2, sender.Bottom)
End Using
End Sub
End Class
答案 0 :(得分:1)
此时,我认为可以确定Krypton Toolkit Panel
没有控件样式UserPaint
。
“如果为true,则控件会自行绘制而不是操作系统。如果为false,则不会引发Paint事件。此样式仅适用于从Control派生的类。” - MSDN
如果可能,您可以尝试以下选项之一。
首先创建一个源自Krypton Toolkit Panel
的自定义控件。
选项1
在构造函数中追加标志。 (这可能会破坏基类中的自定义绘图)
Public Sub New()
MyBase.SetStyle(ControlStyles.UserPaint, True)
End Sub
选项2
覆盖WndProc
。
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Try
If ((m.Msg = WM_PAINT) OrElse (m.Msg = WM_ERASEBKGND)) Then
Using g As Graphics = Me.CreateGraphics()
Me.OnPaint(New PaintEventArgs(g, Me.ClientRectangle))
End Using
End If
Catch ex As Exception
Finally
MyBase.WndProc(m)
End Try
End Sub
Const WM_PAINT As Integer = 15
Const WM_ERASEBKGND As Integer = 20