f2.show()方法不显示form2中的进度条

时间:2011-07-04 08:23:17

标签: c# .net winforms progress-bar modal-dialog

我有一个有两种表格的应用程序。第一个是我完成所有工作的地方,第二个是用于显示进度条。

我想从主窗体中打开第二个。如果我使用

Form2 newForm = new Form2();
newForm.Show();

Form2在需要打开和关闭时打开和关闭,但我看不到进度条。我只能看到一个空白而不是它。

当我使用

Form2 newForm = new Form2();
newForm.ShowDialog();

我可以看到进度条,但Form2在需要时不会关闭。它永远运行,我该怎么办?

我使用静态公共变量closeForm来关闭第二个表单。当我需要关闭我设置的表格时

closeForm = true;

在第二种形式中,我有一个计时器

private void timer1_Tick(object sender, EventArgs e)
{
    if (Form1.closeForm)
    {
        this.Dispose();
        this.Close();
        return;
    }
    else
    {
        progVal++;
        progressBar1.Value = (progVal % 100);
    }            
}

这是我放置ProgressBar值并关闭表单的地方。

当我使用show方法时,我只看到空格而不是form2中的控件。不只是进度条,我希望form1关闭form2

2 个答案:

答案 0 :(得分:0)

首先,您需要向进度条报告进度

 int iProgressPercentage = (int)(dProgressPercentage * 100);
 // update the progress bar
 progressBar1.ReportProgress(iProgressPercentage);

首先尝试这样做,然后调用this.close();

答案 1 :(得分:0)

正如我在评论中所说,你需要从这里Form.ShowDialog Method检查模态对话框,我只是在那里引用以下表格:

  

您可以使用此方法在应用程序中显示模式对话框。调用此方法时,直到关闭对话框后才会执行其后面的代码。

为什么您无法在ProgressBar Form2上看到Show(); button click,您需要提供有关如何处理它的更多信息,就像我将您的计划分为两部分一样使用两个Form2来运行它们(点击按钮1显示progressbar;然后点击button2关闭它)我可以看到您的预期结果:{{1}}。

如果没有您的进一步信息,我最好的猜测是运行阻止Form2更新其GUI。