2014-01-10 32 views
0

我想在Krypton Toolkit Panel控件的中間畫一條線,但是這條線沒有畫出來。在氪氣面板上劃線?

我都試過soultions這裏: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 
+1

您是否在該方法上放置了一個斷點以查看代碼是否實際上正在執行? –

+0

完成,沒有執行,我失蹤了嗎?,我試圖啓用/禁用一些可疑控制屬性,但該方法仍未執行 – ElektroStudios

+1

對象類型何時獲取像'.Width'和'.Bottom '? –

回答

1

在這一點上,我認爲它是安全的結論是,Krypton Toolkit Panel沒有控制風格UserPaint

「如果爲真,控制油漆本身,而不是操作系統的這樣做。如果爲假,則不會引發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