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

使用している方法はそれを行う唯一の方法ですが、そのとおりです。デフォルトのコンボボックスの上に描画され、コンボボックスコントロールを使用している間はこれを回避する方法はありません.

カスタム描画コンボボックスを真に取得するには、オブジェクト ツリーの 1 つ上のレベルに移動する必要がありますが、コンボボックスのほぼすべての機能を再作成する必要があります。

于 2009-05-27T16:31:34.187 に答える