DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Formを操作不能にしたときに灰色にならない方法

環境/言語:[C# VisualStudio.NET2003 Framework1.1]
分類:[.NET]

C#でWinアプリを作成中なのですが、Formをロック(操作不能状態)に
したいためにEnabled = falseに設定しました。
しかし、色がグレーになってしまいます。
どうしても現在の配色のまま操作不能にしたいのですが、
方法を分かる方お願いします。

Enabled=falseの時、灰色にならない方法。
Enabledプロパティを使わずロック状態にする方法。
何でも構いません。
フォームをロック状態に出来てればそれで構いません。
お願いします。
■No15800に返信(トマトマトさんの記事)
> どうしても現在の配色のまま操作不能にしたいのですが、

Panelコントロールに全コントロールを乗せて、PanelのEnabled = falseってのはどうでしょう?
> Panelコントロールに全コントロールを乗せて、PanelのEnabled = falseってのはどうでしょう?

試しましたが、Form.enabled = falseの時と変わりませんでした。
TextBoxコントロールに関しては、次のページで紹介しています。

TextBoxコントロールのEnabledプロパティをFalseにしても前景色と背景色を変えないようにする
http://dobon.net/vb/dotnet/control/tbenabledfalse.html

ともかく、いい方法は無いようですので、コントロールにReadOnlyプロパティがあれば、それを使うのが良いのではないでしょうか。
やはりいい方法はないですか。

代替案としてモーダルダイアログを呼び出してダイアログを隠すという
手段もありと考えてるんですが、今度はスレッド中にモーダルダイアログを
表示するとスレッドは実行されているようなんですが、モーダルダイアログ
の方がモーダルになってないという現象が起きています。
スレッド中にモーダルダイアログを表示する方法ありませんか?
> 何でも構いません。
> フォームをロック状態に出来てればそれで構いません。

フォームの WndProc をオーバーライドして、入力系のメッセージをすべて無視してみるとか。

管理するべきものが多いようなら、自アプリケーション向けの Windows メッセージをフックして、いらないメッセージを握りつぶすとか。
> 管理するべきものが多いようなら、自アプリケーション向けの Windows メッセージをフックして、いらないメッセージを握りつぶすとか。

確かにそれだと出来そうですが、かなり怖いですね。
メッセージを握り潰すというのは怖いのでちょっと・・・

DOBON.NET | プログラミング道 | プログラミング掲示板