- - PR -
ComboBoxのBackColor 2003と2005の違い
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-05 10:30
VS2003で
コンボボックスのBackColorを変更すると、 コンボボックスの枠いっぱいに背景色が適用されます。 VS2003をVS2005へ変換しても コンボボックスのBackColorを変更すると、 コンボボックスの枠いっぱいに背景色が適用されます。 VS2005で コンボボックスのBackColorを変更すると、 コンボボックスの枠より小さく背景色が適用されます。 これはVSの仕様でしょうか? VS2005でコンボボックスの枠いっぱいに背景色を設定する方法がありましたら ご教授ください。 コンボボックスのFlatStyleなどを変更してみましたが無駄でした。 | ||||||||
|
投稿日時: 2006-09-05 11:45
XP スタイルの仕業(?)ではないかと。 VS2003, 2005 の違いというより、XP スタイルかどうかで変わります。 とりあえず、自動生成された以下の行を削除してみると期待どおりになるかと。
| ||||||||
|
投稿日時: 2006-09-05 12:40
ありがとうございます。
Application.EnableVisualStylesの設定を変更すると ComboBoxの枠いっぱいに背景色を表示することができました。 XPスタイルではComboBoxの枠いっぱいに背景色を設定することは 不可能ということでしょうか? | ||||||||
|
投稿日時: 2006-09-05 12:46
MSSTYLES ファイルに因りますが、基本的には BackColor プロパティでは無理でしょう。 どうしても、となると自前で描画することになります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-09-05 13:40
コンボボックスの拡張コントロールを作成しております。
OnPaintで描画しようと試してはいるのですが、うまくいきません。 コンボボックスのエディタ部分のみが枠なしで表示されます。 コンボボックスのリストアイテムの描画は検索するとサンプルがヒットするのですが コンボボックス自体の描画処理がヒットしません。 よろしければアドバイスお願いいたします。 以下はテキストボックスのOnPainを参考に作ってみたのですが まったくだめでした。 Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(e) Dim sf As New StringFormat sf.Alignment = StringAlignment.Near Dim rDraw As RectangleF = RectangleF.op_Implicit(Me.ClientRectangle) rDraw.Inflate(-1, -1) Dim TextBrush As New SolidBrush(Me.DisabledForeColor) Dim BackBrush As New SolidBrush(Me.DisabledBackColor) e.Graphics.FillRectangle(BackBrush, 0.0F, 0.0F, Me.Width, Me.Height) e.Graphics.DrawString(Me.Text, Me.Font, TextBrush, rDraw, sf) End Sub |
1