はじめまして。
VB.NETで、TextBoxのEnabledプロパティをFalseに設定すると、
表示文字と背景色が自動的にグレーに変わりますが、
これを表示文字だけグレーに変えて、
背景色を白のまま変えない方法はないでしょうか。
Enabledプロパティをいじらなくても、フォーカスできないようにすれば
OKです。
お願いします。
WinXP:VB.NET 2003
VB.NETはあまり詳しくないんで他に良い方法があるかもしれませんが、
これで出来ると思います。
With TextBox1
.Enabled = False
.ForeColor = Color.Black
.BackColor = Color.Red
Call SendMessage(.Handle.ToInt32, &HA, 1, 0)
End With
あ、間違い。
.BackColor = Color.White
で(^^;
表示文字グレーは…
.ForeColor = System.Drawing.SystemColors.GrayText
こんな感じでシステムで使ってる色が取れると思いますので適当に。
レスありがとうございます。
今、グリッドで選んだ行のデータ内容が
そのテキストボックスに表示されるようになっているのですが、
グリッドの行の選択を切り替えるとまた背景がグレーに戻ってしまいます。
何かいい対策はないでしょうか。
6.0だとLockedがいいプロパティだったけど
.Netは全然違う意味なのね・・・
ちゅ−わけでだ
フォーム開いた時に文字を任意の色に設定しその時に
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200401/04010025.txt
これ参照してみたらいかがでしょ?
ReadOnly はボクも考えたけど、フォーカス受け取るので
質問者さんの条件を全て満たすにはやっぱり何か修正する
事になると思います。
>グリッドの行の選択を切り替えるとまた背景がグレーに戻ってしまいます。
いきなりグリッドとか言われても困るんですが、
要はテキストボックスのテキストが変更されて再描画
されただけじゃないんですか?。もともと強制的に
色を変えているのでシステムで用意された再描画の処理の
あとに毎回、色変更をしてやる必要があります。
>グリッドの行の選択を切り替えるとまた背景がグレーに戻ってしまいます。
あれ?ゴメンナサイ。こちらで .Text 変更のテストしたら
グレーに戻りませんでした。現象が再現できる最小限のコードを
示していただけると有難いです。
テキスト変更されるたびに色変更したら
うまくいきました。
どうもお手数かけました、
ありがとうございます。
解決後に素人の浅知恵で申し訳ないのですが
ちょっとwebで調べてみました
フォーカスを受け取ってしまったときに
GotFocusやEnterやMouseDownイベントでe.Handler = True
とかe.Cancel = Trueとかそいういうので
無理やりイベントをキャンセルできるとか何とかってのがあるのですけど
そういうのは使えないのでしょうか?
マイクロソフトのページにも上記内容と同等かどうかはわかりませんでしたが
VB6.0のLockedと同じ働きをさせるにはMouseDownイベントをキャンセルさせる
という記述がありました
上記内容はうまく当てはめることはできないでしょうかね・・・
ツイート | ![]() |