Метод f2.show () не показывает индикатор выполнения в form2 - PullRequest
1 голос
/ 04 июля 2011

У меня есть приложение, которое имеет 2 формы.Первый, где я делаю всю работу, а второй только для отображения индикатора выполнения.

Я хочу открыть второй из основной формы.если я использую

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 голосов
/ 04 июля 2011

Как я уже сказал выше в комментарии, вам нужно проверить Модальное диалоговое окно отсюда Form.ShowDialog Method , и я просто цитирую следующую форму там:

Вы можете использовать этот метод для отображения модального диалогового окна в вашем приложении. Когда этот метод вызывается, следующий за ним код не выполняется до тех пор, пока диалоговое окно не будет закрыто.

Как и почему вы не можете видеть ProgressBar на Form2 с Show();, вам нужно предоставить больше информации о том, как вы справляетесь с этим, как будто я делю вашу программу на две части и использую две button click для запустите их (нажмите кнопку 1, чтобы отобразить Form2; и нажмите кнопку 2, чтобы закрыть ее). Я вижу ожидаемый результат: progressbar.

Без вашей дополнительной информации, я думаю, что что-то работает, мешает Form2 обновить свой графический интерфейс.

0 голосов
/ 04 июля 2011

Прежде всего вам необходимо сообщить о прогрессе на индикатор выполнения

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

попробуйте сначала сделать это, затем вызвать this.close ();

...