我目前有一张我正在使用的表格。当用户按下导出按钮时,它会将一些数据导出到Excel工作表。我在后台进行了这个过程,并且在写入时它并没有在视觉上向用户显示excel工作表,但是在之后。
在c#表单上,当他们点击导出时,我禁用表单,以便他们不能按任何内容。我希望有一个消息框或excel正在编写的某种toast / indication,当excel完成时,消息框/ toast / indicator关闭并允许用户继续。
在禁用表单时,写入excel,然后重新启用表单。我有一个使用MessageBox.Show("text");
的消息框,但它并不是那么优雅而且看起来很糟糕。
有没有人做过类似的事情,可以指出我正确的方向。
谢谢, Ĵ
答案 0 :(得分:0)
我假设您运行的进程位于用户界面Thread而不是单独的Process(单独的应用程序)?
你应该这样跟进。首先显示MessageBox
或其他对话框(您可以使用自己设计的形式)。然后,您可以使用BackgroundWorker
类/ Thread
来初始化耗时的工作。这样就不会阻止UI线程。最后,当工作完成后,关闭对话框。
答案 1 :(得分:0)
您可以在表单底部添加类似StatusBar的内容,而不是MessageBox。导出开始后,您可以在该状态栏上显示标签上的信息,并在导出完成后将其删除。此外,您可以向该状态栏添加进度条,以指示导出进度的状态。
答案 2 :(得分:0)
如果您不知道需要多长时间,请使用等待/进度微调器,可能与行计数器组合使用,根据卷的不同,每行或每批1000行都会出现问题。这样,用户可以看到它没有挂起,并且应该耐心地等待它完成。
请参阅此帖子:wpf loading spinner
答案 3 :(得分:0)
感谢您的帮助,
我最终使用win表单上的进度条设置了自己的工作,当它通过我的系统写入excel时递增,其写入的excel中的当前行是进度条上的值,一旦完成,酒吧已经满了,我隐藏吧:)
Ĵ