1

我编写了一个扫描网络的应用程序,然后用所有信息填充一个列表框,发现过程需要一段时间才能按预期完成,因为我们目前拥有的网络设备数量;我想显示这样的进度条,让用户知道正在扫描网络,但我不知道该怎么做,你们能指点我正确的方向吗?我正在考虑动态创建一个小表单,然后用进度条填充它,但此时我很迷茫。谢谢你。

4

2 回答 2

1

您可以将进度条放在与 ListBox 相同的表单上。

展示进度是一种艺术形式。如果您知道要提前扫描多少网络设备,则将Max设置为该数字。然后,当您更新 ListBox 检查时,如果您在下一个网络设备上,您还可以更新进度条的位置。

您还可以使用两个进度条 - 一个用于网络设备的数量,第二个用于当前网络设备。您还可以在发现更多要扫描的内容时更新Max 。

问题在于,您在开始时可能不知道有多少网络设备,或者最后一个设备的扫描时间可能比之前所有设备加在一起的时间要长。在这种情况下,您可以只使用一个频闪进度条,它会前后反弹。您可以在更新 ListBox 时进行更新,或者在计时器上进行更新。这实际上只是让用户知道您很忙并且没有锁定。

如果您想阻止用户在处理过程中单击控件,那么您可以禁用这些控件。

于 2013-04-18T20:41:16.430 回答
1

您的问题暗示网络扫描是在程序启动时发生的第一件事,而不是当用户单击表单上的按钮时,就像在FormCreate事件中一样。如果这是您正在做的事情,您可能会考虑将网络扫描代码放入一个线程并在主窗体启动时启动该线程。这样,用户将真正看到表单,您可以从线程发送表单 ProgressBar 或状态更新。

一个更简单的方法是Timer在表单上放置一个FormCreateFormActivate启动计时器。然后计时器的OnTimer事件将启动网络扫描,您可以从那里更新 ProgressBar 或将状态消息发送到 ListBox 或其他任何东西。

于 2013-04-19T17:54:02.527 回答