3

フランケンシュタインVB6「変換済み」をVB.NETwinformアプリケーションに継承しました。このアプリケーションにはメートルトンのフィールドがあり、ユーザーはタブの順序がオフになっていると当然のことながら不満を漏らしていました(特定の時点以降、フォーム全体にジャンプし始めます)。

タブ順で何かを考えていたので、私は入って[表示]> [タブ順]をオンにしましたが、見栄えが良かったです。

確かに、フォームをもう一度やり直して、タブオーダービューになっているときはすべて問題ありませんが、アプリを実行すると、以前と同じ領域をジャンプし始めますか?!他の誰かがこれに遭遇しましたか、そしてあなたがそうした場合、あなたはどのように解決しましたか?

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

4

3 に答える 3

3

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

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

于 2010-11-30T15:00:59.603 に答える
2

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

ソリューションのアイデア:もちろん、タブ オーダーの更新と修正は時間がかかり、エラーが発生しやすい作業です。フォームのコンテナーとコントロールを再帰的に反復し、タブ オーダー値を適切に割り当てるルーチンを作成する必要がある場合があります。コンテナの各コントロールの位置ポイントを比較して、タブ オーダーを設定します。一番上と一番左のポイントが「下位」ランクで、一番下の一番右のコンポーネントが「最高」です。もちろん、これにはカスタムの並べ替えアルゴリズムが必要です。そして、周りを見渡すと、このようなものはすでにそこにあるかもしれません。

解決案 2:リファクタリング! 分割統治。しばらく時間がかかりますが、UI コンポーネントを個別の論理的に編成されたユーザー コントロールに移動すると、コードベースがより緊密になります。また、多くのバグを発見できます。

于 2010-11-30T15:00:07.907 に答える
1

コントロールの一部がコンテナー コントロールに埋め込まれており、コンテナー コントロールのタブ オーダーが原因で、フォーカスがランダムに飛び回っているように見えることがあります。タブ オーダー ビューを表示している場合は、コンテナー コントロールのタブ オーダーに注意してください。同じタブ オーダーが設定されていないこと、および次のタブ オーダーで論理的に並べられていることを確認してください。あなたの個々のコントロール。

Control.Focusそれ以外の場合は、実行時に既定のタブ オーダーに干渉する可能性のあるへの呼び出しがないか、UI コードを確認する必要があります。一部の検証コードは、正常に完了した後にフォーカスを「次の」コントロールに変更している可能性があります (または、検証が失敗した場合は前のコントロールに「戻る」)。

于 2010-11-30T15:00:36.067 に答える