2011-09-14 12 views
5

TextBoxでテキストの選択を無効にしてテキストの中央をクリックしたいが、ユーザーはこのTextBoxを入力して以前のテキストの最後に書き込むことができなければならないReadOnlyまたはEnable = falseにしてください。TextBoxの選択を無効にする方法

私はMouseDownを処理し、次の操作を実行しよう:

input.Select(input.Text.Length, 0); 

それはテキストの中央にカーソルを置くのに役立ちますが、ユーザーはまだ終わりから選択を行うことができます。

またMessageBox()MouseDownイベントにしますが、この場合ユーザーはtextBoxをクリックして何も書き込めません。

最後に、別のコントロールにfocus()を設定して、一定期間後にフォーカスを戻しましたが、全く機能しませんでした。ユーザーはまだ選択することができます。

どうすればいいですか?

+2

最初のテキストボックスにのみ追加する2番目のテキストボックス? – LarsTech

答えて

2

UI /ユーザーモデルに合っている場合は、2つのテキストボックスを使用することもできます。読み取り専用のテキストボックスで、ユーザーが表示して実行できるテキストがあれば新しいテキストのための編集可能なものと、新しいテキストを読み取り専用のテキストボックス(および永続性レイヤー)にコミットするためのボタンがあります。アプローチがあることを

だけではなく、間違いなく、よりユーザーフレンドリー—編集可能なボックスは、ユーザーがバックスペースを打つ—だけでなく、箱が行うようにするフレームワークと少ない戦いを必要とするときに混乱を取得され、むしろ単に「追記」よりも完全に編集可能ですあなたが必要なもの。

5

どうClickイベント

編集のためにこのことについて:また、すべてのケースをカバーするためにDoubleClickMouseLeaveのために同じことを行います。共通のイベントハンドラを持つことができます。

private void textBox1_Click(object sender, EventArgs e) 
    { 
     ((TextBox) sender).SelectionLength = 0; 
    } 
+0

ほぼ。 'MouseUp'選択が消えても、ユーザは何かを選択することができます(青い強調表示) – Pieniadz

+1

選択をクリアするイベントのリストに' MouseMove'を追加します。 –

1

あなたのMouseDownイベントハンドラとオフ遠くないですが、これは、彼らが選択を終了したときに起動するイベントがあるとして、おそらくより良い、MouseUpイベントをキャッチします。

また、SelectionChangedイベントをキャッチすることもできます。

ちょうどあなたを置く:

input.Select(input.Text.Length、0);

これらのイベントハンドラのいずれかのコード。

+2

winforms 'TextBox'のための' SelectionChanged'はありません。 –

関連する問題