2

对于需要几秒钟以上的任务,我认为一个好的用户界面应该提供一个进度条以及有关操作进度的适当信息。(Microsoft 很乐意提供有关此主题的用户界面指南,但我想要一个更高级的状态面板。)

我正在使用的“任务”类能够记录消息,如果消息足够重要(警告或错误),我想在进度面板上显示它们。当出现警告或错误(可能是警告或错误图标)时,图形指示也会很好。如果有很多这样的消息,一个文本框、一个列表视图或者可能是一些报告控件在这里可能是合适的。

任务运行时可能有一个取消按钮,任务完成后,一个“查看日志”按钮也不错。

总而言之,我有一个好主意如何实现我的状态面板,但我真的很想对此有所了解。我错过了什么重要的事情吗?我在这方面做得太过分了吗?那里可能已经有类似的组件可用了吗?

4

4 回答 4

2

对于日志记录,您可能实际上应该有另一个更高级别的错误。这些是我通常实现的级别(从 80 年代的 DEC 开始)。

  1. DEBUG - 一个非常低优先级的消息,开发人员刚刚输入它以帮助诊断发生了什么事情,以防出现问题。
  2. 信息 - 没问题,只是报告用户可能感兴趣的进度。
  3. 警告 - 在某些情况下可能会出现问题,但也可能很好。
  4. 错误 - 一个明确的问题。必须通知用户,但程序会尝试继续运行。
  5. 致命 - 一个严重到程序无法继续的问题。

第二个是,由于您将其称为“进度面板”,我假设您正计划实施某种进度条。实际上已经对进度条进行了相当多的研究。最重要的是,无论你做什么,都不要让进度条随着进度变慢。这使它似乎永远拖下去。

最后,听起来您正在考虑某种状态消息行。如果您正在寻找一些好的状态消息,我建议您使用其中的一些。:-)

于 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在堆栈上压入一个新柱,并EndTask弹出一个。

SetProgress 设置最近推送的进度条的进度,并将更改波及父进度条。例如:

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

现在,显示了 2 个进度条,第二个显示为 25% (10/40),第一个显示为 62.5% (1/2 + 10/40*2)

就像我上面说的,如果你在堆栈中有 >2 个任务,我只显示第一个和最后一个(第一个给出整体进度并且永远不会倒退,第二个给出当前活动的指示)

您可以通过为每个子任务赋予权重来扩展它,即

StartNewTask(Caption,[ListOfSubTaskWeightings])

使顶部进度条更平滑。

此外,开发人员可以显示所有进度条以查看为什么需要很长时间,我认为您可以从中制作出不错的日志。

于 2008-12-10T18:53:17.887 回答