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

選択できないTextBox

環境/言語:[VB.NET 2002]
分類:[.NET]

2005/01/10(Mon) 20:47:27 編集(投稿者)

TextBoxでもRichTextBoxでも同じだと思うのですが、
EnabledプロパティをFalseにしてあっても、
ReadOnlyプロパティをTrueにしてあっても、
必ずTextBox内の文字列をマウスで選択できてしまいますよね?
これを、選択できないように、クリックしてもカレットすら行かないようにしたいのですが、
どのようにしたらよいのでしょうか。

なぜこんなことをしたいのかというと、
フォーム上にコントロールがたくさんあってフォームがスクロールできるようになっているとき、
TextBoxにカレットがあるとマウスのスクロールホイールでフォームをスクロールできなくなるからです。
よろしくお願いします。
■No8303に返信(smithさんの記事)
> TextBoxでもRichTextBoxでも同じだと思うのですが、
> EnabledプロパティをFalseにしてあっても、
> ReadOnlyプロパティをTrueにしてあっても、
> 必ずTextBox内の文字列をマウスで選択できてしまいますよね?
> これを、選択できないように、クリックしてもカレットすら行かないようにしたいのですが、
> どのようにしたらよいのでしょうか。
>
> なぜこんなことをしたいのかというと、
> フォーム上にコントロールがたくさんあってフォームがスクロールできるようになっているとき、
> TextBoxにカレットがあるとマウスのスクロールボタンでフォームをスクロールできなくなるからです。
> よろしくお願いします。


こんにちは
平ちゃんです
回答ではないですが
TextBoxを配置して実験した結果

@EnabledプロパティをFalseにすると選択できない。
AEnabledプロパティをTrueにして文字を選択した状態でフォームをスクロールするときちんと選択した文字が隠れて最後までスクロールできました。

コントロールの少ない状態でテストしてみてください。
2005/01/10(Mon) 20:47:05 編集(投稿者)

EnabledプロパティをFalseにすると選択できませんでした。
勘違いしていたようです。
Falseにしてしまうと、TextBox内の文字の色を変えられなくなってしまうので、
Trueにしてありました。

なのでEnabledプロパティはTrueでないと困るのですが、
EnabledプロパティがTrueな状態で選択できないようにはできないでしょうか。
新しくプロジェクトを作成し、TextBoxを1つだけ配置して実験してみましたが、
EnabledプロパティがTrueな状態でTextBoxにカレットがある状態だと、
マウスのスクロールホイールを回転させてもTextBox内の文字がスクロールしてしまうので、
やはり、フォームをスクロールさせることができません。
  • 題名: Re[3]: 選択できないTextBox
  • 著者: 平ちゃん
  • 日時: 2005/01/10 23:04:52
  • ID: 8306
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No8305に返信(smithさんの記事)

こんにちは
smithさんの動作が確認できました。

TextBox の TabStop = False ではどうでしょうか。

それと一旦 Focus を受けると発生しますので
Focus を外す操作ができることが必要です。
フォームなどをクリックするとTextBoxからFocus が外れるように
すれば良いと思います。
こんにちは、じゃんぬねっと です。

■No8303に返信(smithさんの記事)
> ReadOnlyプロパティをTrueにしてあっても、
> 必ずTextBox内の文字列をマウスで選択できてしまいますよね?
> これを、選択できないように、クリックしてもカレットすら行かないようにしたいのですが、
> どのようにしたらよいのでしょうか。

フォーカスが決定された時点 (エラー検証を考えると Validating 以降が好ましい) で、
キーボードによるフォーカス遷移なのか、マウスによるフォーカス遷移なのかを判断します。

キーボードによるフォーカス遷移 (Tab キー) だった場合は、
Shift が押下されているかを読み取り、次の (または前の) コントロールを再検索します。
マウスだった場合は、フォーカス遷移をキャンセルすれば良いでしょう。

参考記事
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=9761
  • 題名: Re[2]: 選択できないTextBox
  • 著者: smith
  • 日時: 2005/01/12 1:39:56
  • ID: 8347
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
Private Sub TextBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Enter
Button1.Focus()
End Sub

のようにして、Enterイベントが発生した場合に、
関係ないコントロールへフォーカスを飛ばしてしまえば大丈夫なようです。
この方法でなんとかがんばってみます。ありがとうございました。
解決済み!

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