C# WinForms テキスト ボックスがフォーカスを受け取ると、ブラウザーのアドレス バーのように動作するようにします。
意味を理解するには、Web ブラウザのアドレス バーをクリックしてください。次の動作に気付くでしょう。
- テキストボックスが以前にフォーカスされていなかった場合、テキストボックスをクリックするとすべてのテキストが選択されます。
- テキスト ボックス内でマウスを押してドラッグすると、マウスで強調表示したテキストのみが選択されます。
- テキスト ボックスが既にフォーカスされている場合、クリックしてもすべてのテキストが選択されるわけではありません。
- プログラムまたはキーボードのタブ操作でテキスト ボックスにフォーカスすると、すべてのテキストが選択されます。
私はWinFormsでこれを正確にやりたいです。
FASTEST GUN ALERT: 回答する前に以下をお読みください! みんなありがとう。:-)
.Enter または .GotFocus イベント中に .SelectAll() を呼び出しても機能しません。ユーザーがテキスト ボックスをクリックすると、クリックした場所にキャレットが配置され、すべてのテキストの選択が解除されるためです。
ユーザーがマウスでテキストを選択できないため、.Click イベント中に .SelectAll() を呼び出しても機能しません。.SelectAll() 呼び出しは、ユーザーのテキスト選択を上書きし続けます。
上記のルール 2 に違反するため、フォーカス/入力イベント enter で BeginInvoke((Action)textbox.SelectAll) を呼び出しても機能しません。フォーカス時にユーザーの選択をオーバーライドし続けます。