2010-11-30 14 views
3

私はfrankenstein VB6 winformアプリケーションに "Converted"を継承しました。このアプリケーションのメトリックトンのフィールドがあり、タブオーダーがオフになっているとユーザーが正当に訴えました。タブオーダーのVB.NETの制限?

タブオーダーで何かがオフになっていたら、私は入ってView> Tab Orderをオンにして見栄えが良くなりました。

私はタブをクリックしたときにフォームが再び新鮮になり、すべてがうまくいきますが、アプリケーションが実行されても前と同じ領域でジャンプが開始されますか?他の誰かがこれに遭遇しましたか?

[編集]:これらの入力フォームはすべて、タブコントロール内の別々のタブにあります。これはおそらく、さらに状況を混乱させるでしょう。

+2

あなたは私の同情があります。私はvb6-> vb.netの狂気の私のシェアを扱ってきました。それは楽しいことではありません:( –

+0

@Joel&curtisk:私もそれを感じています。サポートグループを開始する必要はありますか?痛みを分かち合う –

+0

@Paul私にサインアップすると、これは嫌なことです:p – curtisk

答えて

3

コード内に、タブ順序をオーバーライドしてアプリケーションのフォーカスを手動で設定する、奇妙なフォーカス呼び出しがありますか?

私は過去にタブの順序付けがすべて混乱しているという問題を抱えていました。通常は、最初からアプリケーションを実行し、手動で注文を設定することに慣れてきました。これはあなたが探しているものではないかもしれませんが、私は何も知らないと分かります

+0

「奇妙な」フォーカスコールがあまりにもいいと思うと、それが検証しようとしていたものとコードがどこにあったのかを知っていたが、それは最終的にはそれだった。 – curtisk

2

フォームに多数のコントロールがある場合は、パネルやグループボックスなどのコンテナで構成されている可能性があります。タブ順序を設定するときは、コンテナの順序も考慮する必要があります。コンテナ内のタブ注文間の不一致は、奇妙なジャンプを説明することができます。これは特に、2つ以上のコントロール/コンテナが同じタブ順序値を持ち、タブ処理を任意にする場合に発生します。

ソリューションのアイデア:もちろん、タブの順序の更新と修正は遅く、エラーが発生する可能性があります。フォームのコンテナとコントロールを反復的に反復し、タブ順序の値を適切に割り当てるルーチンを記述することができます。最上部と最左端が「下部」ランクで、下部の最右端のコンポーネントが「最高」であるコンテナの各コントロールのロケーションポイントを比較することによってタブ順序を設定します。これは、もちろん、カスタムソートalgを必要とします。あなたが周りを見回すと、このようなものは既にそこにあるかもしれません。

解決策2:リファクタリング!分割統治。しばらく時間がかかりますが、UIコンポーネントを別々の論理的に構成されたユーザーコントロールに移動すると、コードベースが強化されます。あなたはまた、多くのバグを発見するでしょう!

+0

良い考えですが、それはすでに論理グループグループボックス内の順番が正しく、グループの下にある項目には、10.0.1、10.0.2のタイプ指定 – curtisk

+0

が正しく表示されます。あなたの例でその中間ゼロは私を心配...どのように割り当てられ、処理されますか? –

+0

私は主な質問を更新しますが、これらの入力フォームはすべて痛みを和らげる別のタブ(タブコントロール)にあります:/ – curtisk

1

コントロールの一部がコンテナコントロールに埋め込まれている可能性があり、コンテナコントロールのタブ順にフォーカスがランダムに飛び回っているように見えます。タブオーダービューでは、コンテナコントロールのタブ順序に注意してください。いずれのタブ順序も同じではなく、タブ順序を論理的に指定していることを確認してくださいあなたの個々のコントロール。

そうでない場合は、実行時にデフォルトのタブ順序を妨げている可能性のある電話番号のControl.FocusへのUIコードを確認する必要があります。一部の検証コードは、正常に完了した後にフォーカスを「次の」コントロールに変更している可能性があります(妥当性検査が失敗した場合は前のコントロールに戻る)。

+0

私のポールへの返答を確認してください、すでにグループパスに入っていますが、私がフォーカスをジャンプして調べる必要があることを知っているかどうかを確認してください。 – curtisk