TextBoxを使用付加にしても背景色を変えない方法

解決


おやすみ三秒  2004-09-17 11:49:29  No: 116357  IP: [192.*.*.*]

はじめまして。

VB.NETで、TextBoxのEnabledプロパティをFalseに設定すると、
表示文字と背景色が自動的にグレーに変わりますが、
これを表示文字だけグレーに変えて、
背景色を白のまま変えない方法はないでしょうか。

Enabledプロパティをいじらなくても、フォーカスできないようにすれば
OKです。

お願いします。
WinXP:VB.NET 2003

編集 削除
nanashi  2004-09-17 12:20:55  No: 116358  IP: [192.*.*.*]

VB.NETはあまり詳しくないんで他に良い方法があるかもしれませんが、
これで出来ると思います。

With TextBox1
    .Enabled = False
    .ForeColor = Color.Black
    .BackColor = Color.Red
    Call SendMessage(.Handle.ToInt32, &HA, 1, 0)
End With

編集 削除
nanashi  2004-09-17 12:21:38  No: 116359  IP: [192.*.*.*]

あ、間違い。

.BackColor = Color.White

で(^^;

編集 削除
特攻隊長まるるう  2004-09-17 12:57:09  No: 116360  IP: [192.*.*.*]

表示文字グレーは…
            .ForeColor = System.Drawing.SystemColors.GrayText
こんな感じでシステムで使ってる色が取れると思いますので適当に。

編集 削除
おやすみ三秒  2004-09-17 13:26:30  No: 116361  IP: [192.*.*.*]

レスありがとうございます。

今、グリッドで選んだ行のデータ内容が
そのテキストボックスに表示されるようになっているのですが、
グリッドの行の選択を切り替えるとまた背景がグレーに戻ってしまいます。
何かいい対策はないでしょうか。

編集 削除
葉月  2004-09-17 13:49:25  No: 116362  IP: [192.*.*.*]

6.0だとLockedがいいプロパティだったけど
.Netは全然違う意味なのね・・・

ちゅ−わけでだ
フォーム開いた時に文字を任意の色に設定しその時に
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200401/04010025.txt
これ参照してみたらいかがでしょ?

編集 削除
特攻隊長まるるう  2004-09-17 14:14:13  No: 116363  IP: [192.*.*.*]

ReadOnly はボクも考えたけど、フォーカス受け取るので
質問者さんの条件を全て満たすにはやっぱり何か修正する
事になると思います。

>グリッドの行の選択を切り替えるとまた背景がグレーに戻ってしまいます。
いきなりグリッドとか言われても困るんですが、
要はテキストボックスのテキストが変更されて再描画
されただけじゃないんですか?。もともと強制的に
色を変えているのでシステムで用意された再描画の処理の
あとに毎回、色変更をしてやる必要があります。

編集 削除
特攻隊長まるるう  2004-09-17 14:24:25  No: 116364  IP: [192.*.*.*]

>グリッドの行の選択を切り替えるとまた背景がグレーに戻ってしまいます。
あれ?ゴメンナサイ。こちらで .Text 変更のテストしたら
グレーに戻りませんでした。現象が再現できる最小限のコードを
示していただけると有難いです。

編集 削除
おやすみ三秒  2004-09-17 14:46:11  No: 116365  IP: [192.*.*.*]

テキスト変更されるたびに色変更したら
うまくいきました。

どうもお手数かけました、
ありがとうございます。

編集 削除
葉月  2004-09-17 16:13:08  No: 116366  IP: [192.*.*.*]

解決後に素人の浅知恵で申し訳ないのですが
ちょっとwebで調べてみました

フォーカスを受け取ってしまったときに
GotFocusやEnterやMouseDownイベントでe.Handler = True
とかe.Cancel = Trueとかそいういうので
無理やりイベントをキャンセルできるとか何とかってのがあるのですけど
そういうのは使えないのでしょうか?

マイクロソフトのページにも上記内容と同等かどうかはわかりませんでしたが
VB6.0のLockedと同じ働きをさせるにはMouseDownイベントをキャンセルさせる
という記述がありました

上記内容はうまく当てはめることはできないでしょうかね・・・

編集 削除