以前はフォームが 1 つしかなく、TabOrder は簡単でした。現在、そのフォームのコントロールの一部を別の .NET カスタム コントロールに移動し、そのカスタム コントロールを前のフォーム内でホストしています。そのため、ボタンの一部はメイン フォームのままで、フォームの残りの部分はその中にあります。カスタム コントロールであり、コントロールの TabOrder が変更されました。TabOrder が以前と同じように動作するようにするには、どうすればこれを修正できますか?
ありがとう。
コントロールコンテナが関係している場合にタブの順序がどのように混乱するかを想像したので、コメントを拡張してみましょう。
6つのボタン(A、B、C、D、E、およびF)があるとします。
Z
A B | C D | E F
(私はそれがお粗末な図であることを知っています、しかし私は速くて汚い良いものをすることができません)
A、B、E、およびFは、フォームの表面に直接あります。CとDは、Zという名前のユーザーコントロールに含まれています。
タブの順序をアルファベット順にしたい場合は、次のTabIndex
ように値を設定します。
A = 0
B = 1
Z = 2
E = 3
F = 4
C = 0
D = 1
コントロールコンテナのタブは、内部のコントロールに関連しています。アルゴリズムは非常に単純です。TABを押すと、フレームワークはシーケンス内の次のコントロールを探します(*)。つまり、AタブはBに、BタブはZになります。Zはコンテナなので、フォーカスは「最初の」子Cに移動します。CタブはDに移動します。Dタブはコンテナから出て、Eで中断したところから再開します。EタブはFに移動します。 。Fは、最上位のコンテナーであるコンテナーからタブで移動するため、最初からやり直します。FはAにタブで移動します。
(*)シーケンスにギャップがある可能性があり、同じTabIndexを持つ2つのアイテムがある場合、それらはZオーダーインデックスによってさらに評価されます。