如何在我的主表单中显示处理表单

时间:2010-06-11 13:01:58

标签: winforms process c#-2.0 show

我想在我的主表单工作时以表格形式显示处理图像。

我已经创建了处理表单。

我用

尝试了
ProcessingForm obj = new ProcessingForm();

obj.show();

DOSomeStuff();

obj.close();

它显示处理形式..但有时它没有响应......或者我的gif图像停止动画。

怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用BackgroundWorker类来分隔在表单消息处理和处理代码(如DoSomeStuff())下处理的进程。如果您想知道DoSomeStuff()的进展情况,可以在后台工作人员中实施,因为这个课程支持它。

但是如果您的环境要慢于实时处理这两件事,那么您必须为BackgroundWorker提供最低优先级,然后您的图像可以实时工作,但您的工作时间会更长。 这不是一个好的解决方案,因为它取决于环境。

答案 1 :(得分:0)

我使用过CodeProject的this code。这是一个类似于Firefox使用的“旋转”计时器动画。

添加dll作为项目的参考,并在表单上删除进度指示器。

将其初始状态设置为不可见。

然后当您想要显示处理呼叫时:

this.progressIndicator.Visible = true;
this.progressIndicator.Start();

要在处理完成后将其删除,请致电:

this.progressIndicator.Stop();
this.progressIndicator.Visible = false;

它使用System.Windows.Forms.Timer来控制动画并覆盖OnPaint方法以绘制旋转的图像。这可能与您需要的一样准确。

我不是作者,但是我已经使用了它,并且没有任何问题,它会明显减慢实际过程。

但是,您必须将处理放到另一个线程上 - 使用BackgroundWorker类,否则UI将不会更新。