桂忙着弹出

时间:2013-02-21 16:52:11

标签: c#

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

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:4)

诀窍是剥离一个线程,以免绑定UI线程。这通常通过BackgroundWorker来实现。

有一个walkthrough用于在codeplex上设置所有这些。当backgroundworker完成时,加载表单将关闭。

答案 1 :(得分:1)

以下简要介绍如何使用BackgroundWorker组件完成此操作。

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

答案 2 :(得分:0)

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

this.Cursor = Cursors.WaitCursor;

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

this.Cursor = Cursors.Default;