使用WndProc覆盖组合框的涂料

时间:2009-05-27 10:43:08

标签: vb.net combobox drawing messaging

我已经覆盖了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

虽然旧的控件仍在绘制,因为我绘制的组合框只是与旧绘图重叠。有没有办法阻止它绘制默认的组合框?

谢谢, 罗布

1 个答案:

答案 0 :(得分:2)

你正在使用的方法是完成它的唯一方法,但是你是对的,它超越了默认组合框的顶部,并且在使用组合框控件时无法解决这个问题。

要真正获得自定义绘制的组合框,您需要在对象树中向上移动一级,但最后您必须重新创建组合框的几乎所有功能。