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