0

クリプトン ツールキット パネル コントロールの中央に線を描画したいのですが、線が描画されません。

ここで両方のソウルションを試しました:パネルに線を引くが表示されない

この:

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
4

1 に答える 1

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
于 2014-01-10T19:28:03.077 に答える