3つのTextBoxで構成されるUserControlがあります。フォームには、1つ以上のUserControlを含めることができます。独自のタブ動作を実装したいので、ユーザーが2番目のTextBoxでTabキーを押した場合、2番目のTextBoxに何かが入力されている場合にのみ、3番目のTextBoxに移動する必要があります。2番目のTextBoxに何も入力されていない場合、フォームの次のコントロールは、通常のタブの動作に従ってフォーカスを取得する必要があります。ユーザーが最初または2番目のTextBoxに何も入力しておらず、タブを押した場合、フォームのコントロールをスキップする必要があるこの特殊なケースがあります。
ProcessDialogKeyを使用することで、問題なく動作するようになりましたが、まだ1つの問題があります。私の質問は、私のUserControlがTabまたはShift-Tabからフォーカスを取得したかどうかを知りたいので、WinFormsコントロールがどのようにフォーカスを取得したかを検出する方法があるかどうかですが、ユーザーがコントロールをクリックした場合は特別なことはしたくない。