ich die WndProc des ComboBox außer Kraft gesetzt habe, und ich meine eigene Combo-Box am zeichnen, ein Code-Snippet ist unten:Zwingende Farbe von Combobox mit WndProc
Protected Overrides Sub WndProc(ByRef m As Message)
MyBase.WndProc(m)
Select Case m.Msg
Case &HF
Dim g As Graphics = Me.CreateGraphics
If ComboBoxRenderer.IsSupported Then
Dim pTextBoxRect As New Rectangle(Me.ClientRectangle.X, Me.ClientRectangle.Y, Me.ClientRectangle.Width, Me.ClientRectangle.Height)
ComboBoxRenderer.DrawTextBox(g, pTextBoxRect, _tbState)
' .... and so on
End Select
End Sub
Obwohl die alte Steuerung noch gemalt wird als meine Die gezeichnete Kombinationsbox überlappt nur die alte Zeichnung. Gibt es eine Möglichkeit, das Standard-Kombinationsfeld nicht zu zeichnen?
Danke, Rob
Warum das wndproc überschreiben? Warum überschreibe ich nicht einfach die OnPaint-Methode? – Adrian
... oder verwenden Sie eine reguläre ComboBox mit den OwnerDraw-Funktionen? –
Adrian - Die OnPaint-Methode für ein Kombinationsfeld zeichnet das Kombinationsfeld nicht. Fredrik - Ich benutze eine normale Combo-Box und die OwnerDraw Dies ist eine regelmäßige Combobox und ich überschreibe die WndProc-Methode, um das Kombinationsfeld in Visual Styles anzuzeigen, wie ich dies auf Anwendungsebene nicht einstellen kann, weil dies ein Plugin für eine Anwendung. – rob