0

我有一个gui。当我按下按钮时,我的 gui 与软件交互。这需要几秒钟。在此期间,我想要一个对话框、弹出窗口或类似的东西出现在我的 gui 前面,告诉用户等待(带有一条消息)。当 gui 与软件的交互完成时,弹出窗口会自动关闭,用户可以再次正常与 gui 交互。

有什么办法吗?

4

3 回答 3

4

诀窍是分离一个线程,以免占用 UI 线程。这通常是通过BackgroundWorker实现的。

有一个在 codeplex 上设置所有这些的演练。后台工作程序完成后,加载表单关闭。

于 2013-02-21T16:53:50.483 回答
1

下面简要介绍如何使用 BackgroundWorker 组件来完成它。

将 BackgroundWorker 放到您的 Form 上,然后在按钮的 Click 处理程序中,在当前表单上方显示您的弹出指示符 Form,并使用其 RunWorkerAsync 方法启动您的 worker。处理工人 DoWork 事件,它的处理程序运行长时间运行的任务。还要处理工作人员的完成事件(现在不确定它是如何准确调用的),并在其中隐藏您的弹出表单。您可以在 DoWork 事件 eventargs(Result 属性)中跟踪操作结果,还可以使用已完成事件 eventarg 的 Error peroperty 捕获长时间运行的任务期间的任何异常。操作进度可以在 DoWork 处理程序中通过 worker 的 ReportProgress 方法进行报告,并且可以在 GUI 中通过 worker 的相应事件进行捕获。

于 2013-02-21T17:00:25.093 回答
0

您还可以将鼠标光标设置为在长时间运行之前等待

this.Cursor = Cursors.WaitCursor;

然后恢复正常,然后就完成了

this.Cursor = Cursors.Default;
于 2013-02-21T16:56:51.100 回答