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

解決


おやすみ三秒  2004-09-17 20:49:29  No: 116357

はじめまして。

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

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

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


nanashi  2004-09-17 21:20:55  No: 116358

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 21:21:38  No: 116359

あ、間違い。

.BackColor = Color.White

で(^^;


特攻隊長まるるう  2004-09-17 21:57:09  No: 116360

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


おやすみ三秒  2004-09-17 22:26:30  No: 116361

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

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


葉月  2004-09-17 22:49:25  No: 116362

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

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


特攻隊長まるるう  2004-09-17 23:14:13  No: 116363

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

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


特攻隊長まるるう  2004-09-17 23:24:25  No: 116364

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


おやすみ三秒  2004-09-17 23:46:11  No: 116365

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

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


葉月  2004-09-18 01:13:08  No: 116366

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

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

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

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


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加