Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ProgressBar и процесс выполнения всех методов

86K
12 июня 2016 года
beginer_progr
7 / / 02.06.2016
Есть отрывок кода,в котором происходит выполнение всех методов
Код:
private void button1_Click(object sender, EventArgs e)
        {
            int T = Convert.ToInt32(textBox1.Text);
            int U = Convert.ToInt32(textBox2.Text);
            double shag = Convert.ToDouble(textBox3.Text);
            int frc = Convert.ToInt32(textBox4.Text);
            int frc1 = Convert.ToInt32(textBox5.Text);
            int frequency, counter;
            List<Complex> values = new List<Complex>();
            progressBar1.Value = 0;
 
            var timer = new System.Windows.Forms.Timer();
            timer.Interval = 100;
            timer.Tick += (s, a) =>
            {
                progressBar1.Value += 5;
                if (progressBar1.Value == progressBar1.Maximum)
                {
                    timer.Stop();
                    button1.Enabled = true;
                }
            };
            timer.Start();
            for (frequency = frc, counter = 1; frequency <= frc1; frequency++, counter++)
            {
                values.Add(reverstrans(U, frequency, T, frc, frc1,shag));
            }
            values.ForEach(x1 => dataGridView1.Rows.Add(x1.Real, x1.Imaginary));  
            drawreverse(U,T, shag, frc, frc1);
            drawgraph(U, T, frc, frc1, frequency, shag);
        }
Как только вычисления заканчиваются то progressBar1 сразу зелёный,а хотелось бы,чтобы он заполнялся по мере процесса вычисления,тем самым улучшая интерфейс программы.

Если я сделаю вот так
Код:
private void button1_Click(object sender, EventArgs e)
        {
            int T = Convert.ToInt32(textBox1.Text);
            int U = Convert.ToInt32(textBox2.Text);
            double shag = Convert.ToDouble(textBox3.Text);
            int frc = Convert.ToInt32(textBox4.Text);
            int frc1 = Convert.ToInt32(textBox5.Text);
            int frequency, counter;
            List<Complex> values = new List<Complex>();
            progressBar1.Maximum = 500;
                for (frequency = frc, counter = 1; frequency <= frc1; frequency++, counter++)
                {
                values.Add(reverstrans(U, frequency, T, frc, frc1,shag));
                    progressBar1.Value += frequency ;
                }
                values.ForEach(x1 => dataGridView1.Rows.Add(x1.Real, x1.Imaginary));
                drawgraph(U, T, frc, frc1, frequency, shag);
                drawreverse(U, T, shag, frc, frc1);
           }
То выскакивает исключение

Как можно выйти из этой ситуации?
392
24 сентября 2016 года
cronya
421 / / 03.01.2009
а что вы вообще тут делаете?
 
Код:
for (frequency = frc, counter = 1; frequency <= frc1; frequency++, counter++) // можно только догадываться что у вас там подается в текстбоксы?
 {
        values.Add(reverstrans(U, frequency, T, frc, frc1,shag));
        progressBar1.Value += frequency ;
  }
работает все просто
minimum - начало отсчета
maximum - конец отсчета (количество ротаций или циклов)

Код:
private void Form1_Load(object sender, EventArgs e)
{
    progressBar1.Minimum = 0;
    progressBar1.Maximum = 10;
    progressBar1.Step = 1;
}

private void button1_Click(object sender, EventArgs e)
{
    for (int idx = progressBar1.Minimum; idx < progressBar1.Maximum; idx++)
    {  
         progressBar1.PerformStep();
         // progressBar1.Value ++; - либо так по-деревенски
         MessageBox.Show((idx + 1).ToString());                              
    }
    MessageBox.Show("Done!");

}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог