我已经覆盖了ComboBox的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
虽然旧的控件仍在绘制,因为我绘制的组合框只是与旧绘图重叠。有没有办法阻止它绘制默认的组合框?
谢谢, 罗布
答案 0 :(得分:2)
你正在使用的方法是完成它的唯一方法,但是你是对的,它超越了默认组合框的顶部,并且在使用组合框控件时无法解决这个问题。
要真正获得自定义绘制的组合框,您需要在对象树中向上移动一级,但最后您必须重新创建组合框的几乎所有功能。