web-dev-qa-db-ja.com

複数の数値のユーザー入力を受け入れる最良の方法は?

私は、一連の数値の形式でユーザー入力を受け入れる必要がある(非常に)小さなWPFアプリを構築しています。

ユーザーは1から30の数字(すべて6桁の数字)のいずれかを入力し、[送信]タイプのボタンをクリックします。それがアプリ全体です。

これを可能な限り「低摩擦」にして、ユーザーが実行する必要のあるキーストロークとボタンクリックの総数を最小限に抑えたいと考えています。同時に、できるだけ直感的に維持します。

この種の入力を受け入れる最良の方法は何ですか?

私が考えられる唯一のことはテキストボックスであり、ユーザーはカンマ区切り形式で数値を入力するだけですが、誰かがより良い解決策を持っているかどうか知りたいです。

10
Dhaust

リストボックスに項目を追加するテキストボックスをお勧めします。これで、ユーザーはリストボックスに対して追加、編集、および削除を行えるようになります。

私の経験では、区切られた数字のセットは、あるアプリケーションから別のアプリケーションにコピー/貼り付けするのは簡単かもしれませんが、特に30項目までの場合、手動で入力するのは簡単ではありません。逆に、ユーザーが長い区切り文字列を入力することに慣れている場合は、テキストボックスに区切り記号付きの項目を受け入れて、データを自動的に分割し、各項目をリストボックスに追加します。これにより、経験豊富なユーザーは複数のアイテムを追加でき、リストを個別のエンティティとして扱うことで修正も簡単になります。

12
Nescio

キーストロークを最小限に抑えるために、数字を入力するテキストボックスを用意します。6桁を入力するたびに、数字をリストにコピーしてテキストボックスをクリアすると、単一のカンマ区切りのコントロールでスキャンしてエラーを見つけることはできません。

しかし、間違いなく多くの数を入力することは実際には不可能であることを覚えておいてください。

  • 入力済みの番号を簡単に編集できることを確認してください

  • 番号が正しいことを検証する方法がある場合は、できるだけ早く番号に有効/無効のフラグを立ててください。

  • 可能であれば、UIを、コピー元の数値に似せてください。

  • 過去の数値を固定幅フォントでリストに表示します(これにより、過去の15の数値のように3番目の位置に2が2つある場合は、その1を除いて2が表示されます)

  • テスト、テスト、テスト-あなたの場合は簡単です。すべての数値を入力する時間と間違いの数を測定するだけです-いくつかのデザインを構築し、何が最もうまくいくかを確認し、ユーザーが苦労していることに基づいた修正でそれを改善します。

7
Nir

@Nescioの提案に基づいて構築し、非常に効率的にしてください。

テキストボックスとリストボックスがあることを検討してください:

[12____]

 111111
 222222
 333333
*12____*
  • カーソルがテキストボックスの最後の桁を超えて、ユーザーが別の数字を入力したら、リストボックスの下部にエントリを追加し、テキストボックスをクリアして、その数字を最初の桁として追加します。
    • たとえば、123456が入力され、ユーザーが7と入力した場合、エントリがリストに追加され、テキストボックスに7_____が表示されます。
    • Enter、Tab、カンマなどと入力した場合は、エントリを追加してテキストボックスをクリアします。
    • ユーザーonlyは数字を入力する必要があり、キーストロークを最小限に抑えます。ただし、慣れている場合は、追加の区切りキーストロークを使用できます。
  • ユーザーの入力に応じて、現在のリストボックスアイテムの変更を反映します。空/新しいアイテム用の特別なリストプレースホルダーを用意します(例:[ new ]を示す最後の行)。
  • ユーザーがリストボックスのアイテムを選択した場合は、テキストボックスに入力します。すぐに入力を開始して編集してもらいます(必要に応じてフォーカスを移動します)。
    • リストボックス項目を選択するために上/下矢印キーをサポートすることを検討してください。アプリ内のどこにフォーカスがあっても、キーは機能するはずです。
  • 非標準のUIは多くの微妙な詳細を表示しますが、正しく処理しないと厄介です。 UIが自然に感じるまでテストおよび実験します。また、他の人(同僚)に試してもらいましょう。

可能であればカットアンドペーストをサポートします。ユーザーはワークフローを予期しない方法で調整することがよくあります。邪魔にならないようにしてください。

2
dbkk

これには2つの方法があります。

  1. それぞれに6桁のスペースがある30個の入力フィールドを作成します。ユーザーが6桁すべてを入力したら、次へジャンプするか、タブを使用して次へジャンプします。

  2. 1つの入力フィールドを作成し、「タブキーを使用して新しいデータセットを追加する」などのテキストを追加します。そして、ユーザーがタブフィールドを押すたびに別の入力フィールドを追加します。

1
ThomPete

ユーザーはシステムに入力している番号をどこで取得しますか?コピー/貼り付けできますか

それが可能な場合は、AdobeやMicrosoftなどの一部のアプリでシリアル番号を入力するためのコピー/貼り付け機能の仕組みを調べてください。ユーザーは数字の長い文字列をコピーし、一度に多数のフィールドに貼り付けることができます。

それ以外の場合、ThomPeteの答えはかなりうまくいきます。

0
Tucker