Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 3

ошибка с progressbar и таймером

04.03.2013, 14:19. Показов 1165. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет! Вот короче код :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void timer1_Tick(object sender, EventArgs e)
        {
            time += 1;  //вычисляем значение time
 
            progressBar1.Value = time;   //устанавливаем значение прогресс бара
 
            if (progressBar1.Value == 99)   //делаем условие
            {
                MessageBox.Show("Молодец!");   //выводим сообщение
                timer1.Stop();  // тормозим таймер
                progressBar1.Value = 0;  //значение бара = 0
                time = 0;  //переменная time = 0
            }
 
        }
Вот ошибка :
http://www.pixic.ru/i/p0W0D130115413W0.png
Что мне делать? Я нуб в программировании...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.03.2013, 14:19
Ответы с готовыми решениями:

Ошибка системным таймером
Помогите найти ошибку. Использую таймер в консоли Код: procedure StartTimer(interval:cardinal); begin TID :=...

Ошибка межпотокового доступа при работе с таймером, обновляющем страницу в WebBrowser
Здравствуйте! С таймером никогда не работал, но чуточку почитал. Хочу сделать следующее: при нажатие на кнопку, браузер обновляется через...

Progressbar ошибка
Private Sub CommandButton1_Click() With UserForm1 .ProgressBar1.Max = 9 .ProgressBar1.Min = 0 ...

4
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
04.03.2013, 15:01
Никогда не пользовался прогресс баром, но на скрине прекрасно видно, что ему нельзя присвоить значение больше 100, а time у вас достиг 101, никакого условия, которое бы его ограничивало, я тут не вижу.
if(time<=100){а тут уже добавляйте}else{timer1.Еnabled=false, или другой код по желанию}
0
 Аватар для Devastar
3 / 3 / 0
Регистрация: 30.09.2012
Сообщений: 123
04.03.2013, 15:04
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        int time;
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (progressBar1.Value == 99)   //делаем условие
            {
                timer1.Enabled = false;  // тормозим таймер
                MessageBox.Show("Молодец!");   //выводим сообщение
                progressBar1.Value = 0;  //значение бара = 0
            }
            else
            {
                time += 1;  //вычисляем значение time
                progressBar1.Value = time;//устанавливаем значение прогресс бара
            }
        }
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
04.03.2013, 16:10
Цитата Сообщение от EvilFromHell Посмотреть сообщение
никакого условия, которое бы его ограничивало, я тут не вижу.
Туплю и жестко, почему же нет?
C#
1
2
3
4
if (progressBar1.Value == 99)
{ 
timer1.Stop();
}
Разве эта часть не должна остановить генерацию события timer.Tick, что в свою очередь приводет к прекращению постоянного увеличения Value??? Или просто в очереди остается еще парочка событий, которые не успел обработаться.

Добавлено через 4 минуты
Понял!!!!

Вот ошибка.
C#
1
2
MessageBox.Show("Молодец!"); //
выводим сообщение timer1.Stop(); // тормозим таймер
А нужно
C#
1
2
timer1.Stop();
MessageBox.Show("Молодец!");
В чем разница? Событие Tick генерируется в отдельном потоке. То есть этот код не зависим от другого. Когда ты вызываешь MessageBox.Show("Молодец!");, то у тебя приостанавливается текущий поток, но формируется в другом ещё одна обработка Tick, так как ты ещё не остановил таймер.
1
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
04.03.2013, 19:13
Это я просто туплю что-то сегодня, все так и есть как описано выше, просто я невнимательно читал, но способ с моего поста все равно бы помог А генерируются они как-то хитро-в одном потоке, но при этом независимо друг от друга, ибо если в таком таймере затормозить поток, то форма повиснет, но при этом относительно друг друга тики независимы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.03.2013, 19:13
Помогаю со студенческими работами здесь

progressbar ошибка
когда progressbar доходит до конца выдает ошибку: Значение '105' недопустимо для 'Value'. 'Value' должно лежать в диапазоне от 'minimum' до...

Ошибка при пополнении ProgressBar
Доброго времени суток, форумчане! Есть такой не замысловатый код: private async void button1_Click(object sender, EventArgs e) ...

Ошибка при повторном запуске ProgressBar
Здравствуйте всем! подскажите выскакивает ошибка при повторном нажатии кнопки и не срабатывает ProgressBar, что можно сделать? Private...

Консольный progressbar или progressbar в TMemo
Здравствуйте. Хочу спросить ради интереса как создать вот такой ProgressBar но с указанием своих сиволов в консоли и в...

Ошибка доступ к элементу ProgressBar не из того потока, в котором он был создан
Здравствуйте друзья. Cross-thread operation not valid: Control 'progressBar1' accessed from a thread other than the thread it was created...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru