私は上司によって設計された VB.NET (2005) アプリケーションを持っています。このアプリケーションは 100 を超える入力および表示コントロール (テキスト ボックス、コンボボックスなど) を使用し、その多くにはラベルが関連付けられています。上司から、タブ オーダーを設定してからキープレスをトラップして、ユーザーが Enter キーを使用してコントロールを移動できるようにするように依頼されました。このような 2 つのアプリを使用しています。
タブ オーダーについては、View/TabOrder 機能を使用できませんでした。青い小さな tabindex ポップアップが非常に多く表示されているため、クリックするフォーム上のコントロールが表示されないためです。ポップアップを「スルー」してクリックしてみましたが、成功しましたが、それでも必要なタブ順序が得られませんでした。CodeSMART に付属のタブ アシスタントも、希望どおりの結果が得られなかったので、それを使用することができました。
このユーザーコントロールのコントロールは多くのグループに分散され、グループは複数の分割コンテナパネルに分散されます。メイン分割コンテナの最初のパネルには 3 つのメイン グループボックスがあり、ツールストリップ ボタンを介して選択されます (目的のグループ ボックスを表示に設定し、他のグループ ボックスを非表示に設定します)。
例:
Private Sub ShowMainPanel()
'Note: Panels are groupboxes
Me.MaterialPanel.Visible = False
Me.HaulPanel.Visible = False
Me.MainPanel.Visible = True
End Sub
これらのグループボックスのそれぞれには、さらにグループボックスが含まれており、それぞれに 1 ~ 15 のコントロールが含まれています。読み取り専用のものもあれば、ユーザーからの情報が必要なものもあります。必要なコントロールでは、タブ ストップが true に設定されています。
そのため、各メイン グループ パネルのタブインデックスを 0 ~ 2 に手動で設定します。次に、最初のグループ ボックス (メインパネル) について、含まれるコントロールとグループ ボックスのそれぞれにタブインデックスを設定します。非コンテナ タイプのコントロールのタブ インデックスは 0 ~ 25 に設定され、メインパネルのグループボックス (サブ グループ) は 26 ~ 48 です。次に、これらのサブ グループの各コントロールに移動し、これらのコントロールのタブ インデックスを で始まるように設定します。グループの 0 ~ Control.count-1。
要約すると、私のタブ オーダーは次のようになります (省略形)。
mainPanel = 0
1st fields = 0.0
2ndfield = 0.1
3rd field = 0.2
1st group = 0.3
1st field in 1st grp1 = 0.3.0
2nd field in 1st grp1 = 0.3.1
2nd group = 0.4
1st field in 1st grp2 = 0.4.0
2nd field in 1st grp2 = 0.4.1
materialPanel = 1
1st fields = 1.0
2ndfield = 1.1
3rd field = 1.2
1st group = 1.3
1st field in 1st grp1 = 1.3.0
2nd field in 1st grp1 = 1.3.1
2nd group = 1.4
1st field in 1st grp2 = 1.4.0
2nd field in 1st grp2 = 1.4.1
注: たとえば、tabindex には 1.4.0 を実際には入力しませんでしたが、コントロールには 0、サブ グループには 4、メイン グループには 1 を入力しました。
次に、タブ オーダーに基づいて [ドキュメント アウトライン] パネルで zorder を設定します。
このすべてを行った後、メインパネルで作業したかったタブ オーダーを最終的に取得することができました。
しかし、他の 2 つのグループボックス (materialPanel と hauspanel) に同じものを適用すると、タブは完全に無視されます。タブはアプリ内でまったく機能しません。2 番目からメインのグループボックス (MaterialPanel および HaulPanel) 用。アプリはコントロール ライブラリであるため、デバッグ時に組み込みの UserTestContainer を使用します。2 番目の 2 つのグループ ボックスのいずれかが表示されている場合、Tab キーはフォーカスをアプリからテスト コンテナーに移動します。
これは、1 番目のグループボックス (MainPanel) では発生しません。それは正常に動作します。
このようなものを設定するには、面倒な作業に約 3 ~ 4 時間かかりました。コントロールの数が多いため、このアプリケーションは操作が難しく、フォーム デザイナに変更が加えられるたびに、処理に 15 ~ 20 秒かかります。
ここで何が起こっているかについて手がかりを持っている人はいますか?