Предыдущая форма не очищается вовремя для новой формы - PullRequest
0 голосов
/ 24 марта 2012

У меня есть одна форма, отображаемая с ShowDialog().После того, как эта форма закрыта, я показываю новую форму с индикатором выполнения, за исключением того, что предыдущая форма не полностью удаляется до появления формы индикатора выполнения.Как мне справиться с этим?

using(FormA formA= new FormA)
{ 
    if(formA.ShowDialog()==DialogResult.OK)
    {

    }
}

FormB formB = new FormB;
formB.Show();
...{
    formB.progressBar.PerformStep();
...}
formB.Close();                 

Ответы [ 2 ]

1 голос
/ 24 марта 2012

Возможно, вы блокируете поток пользовательского интерфейса, попробуйте это:

using(FormA formA= new FormA)
{ 
    if(formA.ShowDialog()==DialogResult.OK)
    {

    }
}

Application.DoEvents(); //make sure the ui refreshes

FormB formB = new FormB;
formB.Show();
...{
    formB.progressBar.PerformStep();
...}
formB.Close();
0 голосов
/ 24 марта 2012

В приведенном ниже коде код с FormB будет выполнен в событии Form Closed FormA, убедившись, что FormA закрыто до показа FormB.

using(FormA formA= new FormA)
{ 
    formA.FormClosed += delegate(...) {
        FormB formB = new FormB;
        formB.Show();
        ...{
           formB.progressBar.PerformStep();
        ...}
        formB.Close();  
    };
    if(formA.ShowDialog()==DialogResult.OK)
    {

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...