- PR -

ComboBoxのBackColor 2003と2005の違い

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-05 10:30
VS2003で
コンボボックスのBackColorを変更すると、
コンボボックスの枠いっぱいに背景色が適用されます。

VS2003をVS2005へ変換しても
コンボボックスのBackColorを変更すると、
コンボボックスの枠いっぱいに背景色が適用されます。

VS2005で
コンボボックスのBackColorを変更すると、
コンボボックスの枠より小さく背景色が適用されます。

これはVSの仕様でしょうか?
VS2005でコンボボックスの枠いっぱいに背景色を設定する方法がありましたら
ご教授ください。

コンボボックスのFlatStyleなどを変更してみましたが無駄でした。
きよの
常連さん
会議室デビュー日: 2004/02/07
投稿数: 34
投稿日時: 2006-09-05 11:45
引用:

これはVSの仕様でしょうか?



XP スタイルの仕業(?)ではないかと。
VS2003, 2005 の違いというより、XP スタイルかどうかで変わります。
とりあえず、自動生成された以下の行を削除してみると期待どおりになるかと。

コード:
Application.EnableVisualStyles();

未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-05 12:40
ありがとうございます。
Application.EnableVisualStylesの設定を変更すると
ComboBoxの枠いっぱいに背景色を表示することができました。

XPスタイルではComboBoxの枠いっぱいに背景色を設定することは
不可能ということでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-05 12:46
引用:

未記入さんの書き込み (2006-09-05 12:40) より:

XPスタイルではComboBoxの枠いっぱいに背景色を設定することは不可能ということでしょうか?


MSSTYLES ファイルに因りますが、基本的には BackColor プロパティでは無理でしょう。
どうしても、となると自前で描画することになります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)