C # - Обновление индикатора выполнения - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть приложение, которое импортирует записи Excel в пользовательский интерфейс для чтения данных. Этот импорт занимает много времени, поэтому я пытаюсь внедрить индикатор выполнения, чтобы пользователь мог видеть прогресс.

Сначала я сделал это во внешней форме, и все работало нормально. Теперь я изменил его на индикатор выполнения в форме загрузки, и вдруг он не работает. Все, что я сделал, это отправил ссылку на форму из моего исходного листа класса. Вот код, который делает индикатор выполнения.

Единственное изменение, которое я сделал в этом коде, это изменение на "OpenForm", поскольку это новая полоса прогресса. Я знаю, что этот код установит индикатор выполнения на 20 и не будет двигаться после этого. Это работало над формой, которая имела только индикатор выполнения, однако на этом он не работает. Я что-то упустил?

        OpenForm.progressBar1.Minimum = 0;
        OpenForm.progressBar1.Maximum = 100;
        OpenForm.progressBar1.Step = 1 / 50;

        for (int row = 8; row <= 50; row++)
        { 
            IssueRef.Add(ExcelWksht1.Cells[row, 1].Value.ToString());
            Date.Add(ExcelWksht1.Cells[row, 4].Value.ToString());
            Status.Add(ExcelWksht1.Cells[row, 2].Value.ToString());
            Severity.Add(ExcelWksht1.Cells[row, 9].Value.ToString());
            Text.Add(ExcelWksht1.Cells[row, 3].Value.ToString());

            decimal ProgressVal = ( 10m /50m) * 100m;
            int Val = Convert.ToInt32(ProgressVal);

            OpenForm.progressBar1.Value = Val;
            OpenForm.progressBar1.Refresh();

        }

1 Ответ

0 голосов
/ 15 ноября 2018
    for (int row = 8; row <= 50; row++)
        { 
            IssueRef.Add(ExcelWksht1.Cells[row, 1].Value.ToString());
            Date.Add(ExcelWksht1.Cells[row, 4].Value.ToString());
            Status.Add(ExcelWksht1.Cells[row, 2].Value.ToString());
            Severity.Add(ExcelWksht1.Cells[row, 9].Value.ToString());
            Text.Add(ExcelWksht1.Cells[row, 3].Value.ToString());

            decimal ProgressVal = ( 10m /50m) * 100m;
            int Val = Convert.ToInt32(ProgressVal);

            OpenForm.progressBar1.Value = Val;
            //OpenForm.progressBar1.Refresh(); remove this
//add 
Application.DoEvents();

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