1

これを編集して、tabControlの「タブ」とタブキーを使用したコントロールの「タブ」を区別しようとしましたが、電源を入れて意味が明確になることを願っています。

タブコントロールを備えたインターフェイスを備えたac#プロジェクトがあります。3つのタブページ(PersonalInformation、ContactDetails、AdditionalNotes)と関連するコントロールが各タブに含まれています。

ほとんどのユーザーは、キーボードのみを使用してインターフェイスをナビゲートする方が簡単だと感じています(キーボードショートカットやナビゲーション用のコントロールのタブ操作など)。さまざまなショートカットの組み合わせ用のキーボードリスナーを含めました。たとえば、PageUpとPageDownを使用すると、ユーザーはさまざまなタブをページングできます。

ただし、これらのユーザーは情報を入力するために同じパターンに従います。PersonalInformationタブのコントロール(必要に応じて入力)をタブで移動し、タブの最後のコントロールに到達したら、「タブを押し続ける」ことを望みます。次のように:最後のコントロールがTabControl.Page1にフォーカスされている場合、ユーザーがTabキーを押すと、TabControl.Page2の最初のコントロールにフォーカスが移動します。最後のコントロールがTabControl.Page2にフォーカスしたとき、ユーザーがTabキーを押すと、フォーカスがTabControl.Page3に移動します。

このようにして、情報はグループ化されて一緒に含まれ、ユーザーはキーボードを必要とせずに、入力とタブ操作を続けるだけでフォームにすべての情報を入力できます。

したがって、本当の問題はこれを効果的に行うことです。最後のコントロールのOnLeaveを単純に処理することはできません。ユーザー(最後のコントロール)が以前のコントロール(またはShift-Tab)を選択すると、イベントも発生します。

もう1つの問題はメンテナンスです。この「次のタブにフォーカスを移動する」機能をメンテナが忘れたり知らなかったりすると、タブの下部に別のコントロールを追加すると、すべてが失敗する可能性があります。おそらく、最後のコントロールをフォームに追加しますか?

4

1 に答える 1

0

ProcessDialogKeyメソッドをオーバーライドして、Tab(およびShift + Tab)キーストロークを処理し、tabPagesをシフトして、関連するコントロールにフォーカスしました。機能的に言​​えば、これは機能します。

メンテナンスの問題

  • この特定のインターフェースは頻繁に変更されることはなく、リリース前に何が最も効果的かを判断するために、まだかなりの量のユーザビリティテストが進行中です(したがって、元に戻る可能性があります)。

  • 悪い点は、フォーカスのシフトがかなりハードコーディングされていることです。これを一般的に処理する特に簡単な方法は見当たりません。

  • 幸い、tabPagesは3つしかないため、メンテナンスは少なくて済みます。ビジネスロジックは他の場所に完全にカプセル化されているため、ビジネス機能へのリスクはありません。関連する地域に含まれるコードなので、簡単に見つけることができます。また、ユーザーは「キーボード愛好家」であり、データ入力中にすべてをタブで移動するため、問題が発生していることにすぐに気付くことができます。

    コメント/提案は引き続き歓迎します。

  • 于 2011-01-19T14:53:55.413 に答える