timer + progressBar

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

.r3g.
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 01.12.2009 (Вт) 19:19

timer + progressBar

Сообщение .r3g. » 01.12.2009 (Вт) 19:23

Как можно отобразить в progressBar'е прогресс таймера?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: timer + progressBar

Сообщение MIT » 01.12.2009 (Вт) 19:39

ProgressBar1.value :?:
Последний раз редактировалось MIT 01.12.2009 (Вт) 21:20, всего редактировалось 1 раз.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

.r3g.
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 01.12.2009 (Вт) 19:19

Re: timer + progressBar

Сообщение .r3g. » 01.12.2009 (Вт) 20:59

да, нужно свойство value изменять относительно работы таймера (тоесть чтобы в прогресс баре было видно сколько осталось/прошло времени работы таймера), как это можно реализовать? Пробовал backgroundworker'ом - не осилил.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: timer + progressBar

Сообщение MIT » 01.12.2009 (Вт) 21:25

Ну так меняй, в чем проблема-то; учили в школе как проценты от целого искать?
(хотя можно и без процентов, конечно, установив Minimum и Maximum в крайние положения таймера, но проценты, имхо, рулят)

Давай поподробнее. Таймер у тебя, наверно, обыкновенный, тот, что в Toolbox`е в виде контрола?
Из конечного времени вычитай начальное, считай сколько таймер уже отсчитал...
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

.r3g.
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 01.12.2009 (Вт) 19:19

Re: timer + progressBar

Сообщение .r3g. » 02.12.2009 (Ср) 12:48

То, что в процентах это все понятно, определить сколько таймер отсчитал не могу, пробовал timer1.interval (думал, что при работе таймера изменяется), но понял что это константа.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: timer + progressBar

Сообщение MIT » 02.12.2009 (Ср) 12:52

.r3g. писал(а):определить сколько таймер отсчитал не могу
:?

Записывай время старта таймера, вычитай его из текущего (Now), получай период или считай тики таймера, умножай их количество на timer1.interval (это, кстати, не константа) и получай количество прошедших миллисекунд.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

.r3g.
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 01.12.2009 (Вт) 19:19

Re: timer + progressBar

Сообщение .r3g. » 02.12.2009 (Ср) 14:32

Код: Выделить всё
private void button1_Click(object sender, EventArgs e)
        {
            System.TimeSpan t,nt,s;
            s = new TimeSpan(0,1*textbox1.Text,0);
            t = System.DateTime.Now.TimeOfDay;
            timer1.Enabled = true;
            timer1.Interval = System.Convert.ToInt32(textBox1.Text)*60000;
            timer1.Start();
            button1.Enabled = false;
            for (int i = 1; i <= 100; )
            {
                nt = System.DateTime.Now.TimeOfDay;
                i = (nt / (t + s)) * 100;
                progressBar1.Value = i;
            }
                       
        }


В строке "i = (nt / (t + s)) * 100;" такая ошибка:
Ошибка 1 Оператор "/" не может применяться к операндам типа "System.TimeSpan" и "System.TimeSpan".

.r3g.
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 01.12.2009 (Вт) 19:19

Re: timer + progressBar

Сообщение .r3g. » 02.12.2009 (Ср) 18:37

Код: Выделить всё
int i, t, nt;
            t = System.Convert.ToInt32(System.DateTime.Now.TimeOfDay.TotalSeconds);
            nt = System.Convert.ToInt32(System.DateTime.Now.TimeOfDay.TotalSeconds);
            for (i = 1; i <= 100; i = ((nt) / (t+(System.Convert.ToInt32(textBox1.Text)*60))) * 100)
            {
                nt = System.Convert.ToInt32(System.DateTime.Now.TimeOfDay.TotalSeconds);
                backgroundWorker1.ReportProgress(i);
            }


Чуток подправил, ничего не происходит...

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: timer + progressBar

Сообщение MIT » 02.12.2009 (Ср) 18:40

Если честно, то и первый и второй код делает какую-то фигню...
Сейчас примерчик тебе набросаю, всяко нагляднее будет.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: timer + progressBar

Сообщение MIT » 02.12.2009 (Ср) 19:02

Вот пример, смотри что и как я делаю - это один из способов. Код прокомментировал, думаю понятно будет. Если что - спрашивай.
У вас нет доступа для просмотра вложений в этом сообщении.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

.r3g.
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 01.12.2009 (Вт) 19:19

Re: timer + progressBar

Сообщение .r3g. » 02.12.2009 (Ср) 20:03

Благодарю, всё предельно ясно :)

.r3g.
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 01.12.2009 (Вт) 19:19

Re: timer + progressBar

Сообщение .r3g. » 02.12.2009 (Ср) 20:24

при finish = 60 ошибка деления на ноль в строке "progressBar1.Value = s / (finish / 100);", наверно дробная часть отбрасывается и остается 0.
Всё разобрался, сделал отдельное условие для 1 минуты.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: timer + progressBar

Сообщение MIT » 02.12.2009 (Ср) 20:50

Можешь просто раскрыть скобки: s / (finish / 100) заменить на s / finish * 100, да и всего делов-то.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

.r3g.
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 01.12.2009 (Вт) 19:19

Re: timer + progressBar

Сообщение .r3g. » 03.12.2009 (Чт) 17:29

не точно считает при изменении int finish на любое число отличное от 100, + появляется ошибка: Значение "101" недопустимо для "Value".

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: timer + progressBar

Сообщение MIT » 03.12.2009 (Чт) 18:09

Сделай что бы считал точно. Можно заюзать float и класс Math.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


Вернуться в C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList