3

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

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

谢谢,罗伯

4

1 回答 1

2

您使用的方法是完成它的唯一方法,但您是对的,它绘制在默认组合框的顶部,并且在仍然使用组合框控件时无法解决这个问题。

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

于 2009-05-27T16:31:34.187 回答