开发者

f2.show() method does not show the progress bar in form2

开发者 https://www.devze.com 2023-03-17 15:39 出处:网络
I have an application that has 2 forms. First one is where I do all the job and second one is just for displaying a progressbar.

I have an application that has 2 forms. First one is where I do all the job and second one is just for displaying a progressbar.

I want to open the second one from the main form. if I use

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

Form2 opens and closes when it needs to open and close, but I cannot see the progress bar. I just can see a blank instead of it.

When I use

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

I can see the progressbar but Form2 doesn't close when it needs. It runs forever, what should I do?

I use a static public variable closeForm to close the second form. When I need t开发者_StackOverflow社区o close the form I set

closeForm = true;

and in the second form, I have a timer

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

this is where I put the ProgressBar value and close the form.

When I use show method, I only see blanks instead of the controls in form2. not just the progressbar, and I want form1 to close form2


first of all you need to report progress to progressbar

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

try doing that first then call this.close();


As I said above in the comment, you need to check Modal dialog from here Form.ShowDialog Method, and I just quote the following form there:

You can use this method to display a modal dialog box in your application. When this method is called, the code following it is not executed until after the dialog box is closed.

As why you can't see your ProgressBar on Form2 with Show(); you need to provide more information of how you handles it, as if I separate your program into two parts and use two button click to run them (Click button1 to show Form2; and click button2 to close it) I can see your expected result: the progressbar.

Without your further information, my best guess is something running prevents the Form2 to update its GUI.

0

精彩评论

暂无评论...
验证码 换一张
取 消