これを編集して、tabControlの「タブ」とタブキーを使用したコントロールの「タブ」を区別しようとしましたが、電源を入れて意味が明確になることを願っています。
タブコントロールを備えたインターフェイスを備えたac#プロジェクトがあります。3つのタブページ(PersonalInformation、ContactDetails、AdditionalNotes)と関連するコントロールが各タブに含まれています。
ほとんどのユーザーは、キーボードのみを使用してインターフェイスをナビゲートする方が簡単だと感じています(キーボードショートカットやナビゲーション用のコントロールのタブ操作など)。さまざまなショートカットの組み合わせ用のキーボードリスナーを含めました。たとえば、PageUpとPageDownを使用すると、ユーザーはさまざまなタブをページングできます。
ただし、これらのユーザーは情報を入力するために同じパターンに従います。PersonalInformationタブのコントロール(必要に応じて入力)をタブで移動し、タブの最後のコントロールに到達したら、「タブを押し続ける」ことを望みます。次のように:最後のコントロールがTabControl.Page1にフォーカスされている場合、ユーザーがTabキーを押すと、TabControl.Page2の最初のコントロールにフォーカスが移動します。最後のコントロールがTabControl.Page2にフォーカスしたとき、ユーザーがTabキーを押すと、フォーカスがTabControl.Page3に移動します。
このようにして、情報はグループ化されて一緒に含まれ、ユーザーはキーボードを必要とせずに、入力とタブ操作を続けるだけでフォームにすべての情報を入力できます。
したがって、本当の問題はこれを効果的に行うことです。最後のコントロールのOnLeaveを単純に処理することはできません。ユーザー(最後のコントロール)が以前のコントロール(またはShift-Tab)を選択すると、イベントも発生します。
もう1つの問題はメンテナンスです。この「次のタブにフォーカスを移動する」機能をメンテナが忘れたり知らなかったりすると、タブの下部に別のコントロールを追加すると、すべてが失敗する可能性があります。おそらく、最後のコントロールをフォームに追加しますか?