- PR -

コンボボックスのEnable時の文字色

投稿者投稿内容
きよの
常連さん
会議室デビュー日: 2004/02/07
投稿数: 34
投稿日時: 2006-09-19 15:31
引用:

未記入さんの書き込み (2006-09-19 13:33) より:
失礼しました。
WM_ENABLEです。
TextBoxでも使えます。



VS2003 でですが、DropDownStyle が DropDown, Simple ではうまくいきますが、DropDownList では使えませんね。
Enabled が false になる直前に DropDownList だった場合に DropDown にしてしまえばいいと思うのですが。
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-09-19 16:00

皆様、ご返信ありがとうございます。

結局、コンボボックスのみオーナードローにて対応することにしています。
一応、実装して動作も確認中でございます。
いろいろな対策を出していただきありがとうございました。。。

その際の、注意点等ありましたら、またご教授お願いいたします。
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-09-25 11:10

引用:


WndProc メソッドをオーバーライドして、このメッセージを捕捉するという意味です。




上記の方法とは下記のような実装になるのでしょうか?

----------------------------------------------------------------------------
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
'コンボボックスEnable変更時
Const WM_ENABLE As Integer = &HA
If m.Msg = WM_ENABLE Then
'文字色を黒色にするロジック?
End If
End Sub
----------------------------------------------------------------------------

捕捉の方法がわからず苦労しております。
参考ページ等ありましたら、ご教授願えませんでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-25 11:21
引用:

.netさんの書き込み (2006-09-25 11:10) より:

捕捉の方法がわからず苦労しております。
参考ページ等ありましたら、ご教授願えませんでしょうか?


それで捕捉できています。

# それにしても、MyBase.WndProc(m) の記述がないのはまずいですね。

引用:

'文字色を黒色にするロジック?


とりあえず、Return だけでお試しください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-09-25 11:32
早速のご返答ありがとうございます。

下記のような内容のロジックを記述してみましたが、
上手くいきません・・・。

(そもそもこんな感じであっているのでしょうか?)
ちなみに、meはSystem.Windows.Forms.ComboBoxを継承した、
ComboBoxコントロールクラスです。


-----------------------------------------------------------
'コンボボックスEnable変更時
Const WM_ENABLE As Integer = &HA
If m.Msg = WM_ENABLE Then
'文字色を黒に?
MyBase.ForeColor = Color.Black
Me.ForeColor = Color.Black
Return
End If
MyBase.WndProc(m)
-----------------------------------------------------------

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-25 11:44
引用:

.netさんの書き込み (2006-09-25 11:32) より:

下記のような内容のロジックを記述してみましたが、上手くいきません・・・。
(そもそもこんな感じであっているのでしょうか?)


はい、できることを確認しています。

ちなみに、

引用:

MyBase.ForeColor = Color.Black
Me.ForeColor = Color.Black


は不要です。

とりあえず、ブレーク ポイントを設定して捕捉できているかを確認してください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-09-25 11:57

何度もご返信ありがとうございます。。。

ブレークポイントを設定したところ、
確かに、Enable変更時に当該箇所を通過しております。

ただ、どうしてもDisable時の文字色が
グレーアウトになってしまいます。

Returnのみの記述で問題なかったでしょうか?

ちなみに、コンボボックスのDropDownStyleは
DropDownとなっております。

よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-25 15:54
引用:

.netさんの書き込み (2006-09-25 11:57) より:

Returnのみの記述で問題なかったでしょうか?
ちなみに、コンボボックスのDropDownStyleはDropDownとなっております。


この状態で確認しています。
ちなみに、XP 視覚テーマが有効な場合とそうでない場合、両方で確認しています。

何だかよくわからないですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

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