2

数秒以上かかるタスクの場合、私の意見では、優れたユーザーインターフェイスは、操作の進行状況に関する適切な情報とともに進行状況バーを提供する必要があります。(Microsoftは、このトピックに関するユーザーインターフェイスガイドラインを提供してくれますが、もう少し高度なステータスパネルが必要です。)

私が使用している「タスク」クラスはメッセージをログに記録できます。メッセージが十分に重要である場合(警告またはエラー)、進行状況パネルに表示したいと思います。警告またはエラーが発生したときのグラフィック表示(おそらく警告またはエラーアイコン)も便利です。このようなメッセージが多数ある場合は、テキストボックス、リストビュー、またはレポートコントロールが適切である可能性があります。

タスクの実行中にキャンセルボタンが表示される場合があります。タスクが完了した後は、[ログの表示]ボタンも便利です。

要約すると、私は自分のステータスパネルを実装する方法を知っていますが、これについていくつかの情報を提供したいと思います。重要なことを見逃しましたか?私はこれに乗り越えますか?このようなコンポーネントがすでに利用可能になっている可能性はありますか?

4

4 に答える 4

2

ロギングの場合、おそらく実際には別のより高いレベルのエラーが発生するはずです。これらは、私が通常実装するレベルです (80 年代に DEC からスワイプされたように)。

  1. DEBUG - 何か問題が発生した場合に何が起こっているかを診断するために開発者が挿入する非常に優先度の低いメッセージ。
  2. 情報 - 問題ありません。ユーザーが興味を持っているかもしれない進行状況を報告するだけです。
  3. 警告 - 状況によっては問題になる可能性がありますが、問題ない場合もあります。
  4. エラー - 明確な問題。ユーザーに通知する必要がありますが、プログラムは続行しようとします。
  5. 致命的 - プログラムが続行できないほど深刻な問題。

2 つ目は、これを「プログレス パネル」と呼んでいるため、ある種のプログレス バーの実装を計画していると思われます。プログレス バーについては、かなりの研究が行われています。重要なことは、何をするにしても、進行するにつれてバーが遅くならないようにすることです。それは永遠に引きずるように思わせます。

最後に、ある種のステータス メッセージ行を検討しているようですね。適切なステータス メッセージをお探しの場合は、これらを使用することをお勧めします。:-)

于 2008-12-10T14:56:54.137 に答える
1

この種の GUI に何が含まれるかについてのいくつかのアイデアを与えることができる同様のステータス パネルの仕様がここにあります。

順番に、デザインの詳細をリストする前に、このステータス パネルの目標と範囲を定義します。

注:オプションが多すぎると、「コントロールパネル」に進化します;-)

于 2008-12-10T12:46:08.470 に答える
1

最後だけでなく、進行中にログ メッセージを表示する必要があります。バグが発生した場合、それは多くの場合、タスクが完了する前であり、UI はすべてがまだ順調に進んでいると見なします。これが起こっていることを見つけるのは本当に面倒ですが、目に見える唯一のログメッセージ (どこかの外部ファイルに移動することなく) は、実際の問題から遠く離れたランダムな情報メッセージです.

(あなたの質問からは明らかではないので、あなたがすでにこれを行っているかどうかはわかりません。もしそうなら、帽子をかぶってください。)

于 2008-12-10T18:40:17.837 に答える
1

メインの進行状況バーが一度だけいっぱいになることが重要だと思います。常に進行状況が表示されます。

私は最近、仕事で非常に似たようなことをしました。タスクは長く、多くのサブタスクがありました。私が最終的に得たインターフェースは二重のプログレス バーで、実際にはプログレス バーのスタックの最初と最後でした。

APIは次のようなものです

StartNewTask(Caption,NumberOfSubtasks)
EndTask 
SetProgress(Caption,NumberOfSubtasksFinished)

StartNewTaskスタックに新しいバーをプッシュし、EndTask1 つポップします。

SetProgress は、最後にプッシュされた進行状況バーの進行状況を設定し、変更を親バーに波及させます。例えば:

StartNewTask('Doing 2 things',2)
 SetProgress('Done 1 now',1)
 StartNewTask('Big Subtask',40)
  ...
  SetProgress('Done some subtasks',10)

現在、2 つのプログレス バーが表示されています。2 つ目は 25% (10/40)、1 つ目は 62.5% (1/2 + 10/40*2) です。

上で述べたように、スタックに 2 つ以上のタスクがある場合は、最初と最後のタスクのみを表示します (最初は全体的な進捗状況を示し、後戻りすることはありません。2 つ目は現在のアクティビティを示します)。

各サブタスクに重みを付けることで、これを拡張できます。

StartNewTask(Caption,[ListOfSubTaskWeightings])

上部のプログレス バーをより滑らかにします。

さらに、開発者はすべての進行状況バーを表示して、時間がかかる理由を確認できます。それから適切なログを作成できると思います.

于 2008-12-10T18:53:17.887 に答える