• ベストアンサー

VB5でTextBoxを入力不可能にする方法は?

VisualBasic5で開発を行っているのですが、TextBoxの入力を不可能にする(入力カーソルもそこに移動できない)必要が出てきました。 もちろんEnabledプロパティをFalseにする方法があるのですが、この場合文字の色がグレーに変わってしまいます。 また、Labelを使用するパターンも「入力出来たり、入力不可にする」という取り決めがあるので、使えません。 TextBox内の文字色(BackColorも)をそのままにして、入力を拒絶する方法があれば、どなたか教えてください。 もちろんAPIを使用する方法でもかまいませんので…

質問者が選んだベストアンサー

  • ベストアンサー
  • omitom
  • ベストアンサー率100% (2/2)
回答No.2

確かにTextBoxのEnabledプロパティではFalseに設定した場合に薄れて見づらくなりますね。 標準ToolBoxの中にFrameオブジェクトというものがありますがご存知でしょうか? このFrameオブジェクトの上にTextBoxを配置し、 入力の可否をTextBoxのプロパティでは無くFrameのプロパティで行ってみて下さい。 入力は出来なくなり文字の色も変化しませんよ。

fdh26
質問者

お礼

なるほどです!Frameを使ってOptionButtonのグループ分けをして、Frameごと設定不可にしたことはあるのに、この方法は全く思い付きませんでした。私も頭が固すぎます。今後ともよろしくお願いいたします。

その他の回答 (2)

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.3

ピクチャーコントロールやフレームコントロール等のコンテナコントロールの上に子コントロールとしてテキストボックスを貼りつけ、テキストボックスではなく、コンテナ側の Enabled を False にすれば、文字色は単色表示されずに入力不可にすることができます。 BorderStyleをなしにすればコンテナの上に載ってるとは見た目上見えません。 また、複数のテキストボックスをまとめて入力不可にするときは、1つのコンテナに複数のテキストボックスを配置すれば、リソースの節約もできOKです。 他に、TabStop = False にして、Lockedプロパティを使用する方法もありますが、それだとTab移動ではフォーカスはとばされますが、クリックではフォーカスを得てしまいますね。

fdh26
質問者

お礼

早速の御回答ありがとうございます。私もTabStopを使って、クリックでのフォーカスの移動は半ば強制的に以前の場所に戻すようにしてたのですが、このような簡単な方法があるとは"目から鱗"状態です。大変役立ちました。ありがとうございました。

  • yoshioz
  • ベストアンサー率28% (10/35)
回答No.1

TextBoxをFrameの上に置いてFrameのEnabledプロパティを 変更してはいかがですか?

fdh26
質問者

お礼

なるほど、目から鱗! コロンブスの卵です。 やってみると快適快適! 分厚いAPIの本を読みながら試行錯誤していた日々が空しく思えます。 早速使ってみます!