Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 31
1

Обновление panel1 каждые 5 секунд через таймер

01.07.2016, 16:05. Показов 2072. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть панель которая рисует гистограмму по определенному циклу и берет данные из файла, если просто в конце цикла написать refresh() то она будет обновляться очень быстро, будет маргать и вообщем это будет заметно, как мне сделать так, что бы она обновлялась каждые 5 секунд, а не мгновенно?
вот код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 private void panel1_Paint(object sender, PaintEventArgs e)
        {
            textBox2.Clear();
            int[] chX = new int[] { 0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000 };
            int[] chY = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
            Graphics gr = this.CreateGraphics();
            gr = panel1.CreateGraphics();
            for (int i = 0; i < chX.Length; i++)
            {
                gr.DrawLine(new Pen(Color.White), 0 + 15, 0, 0 + 15, 550);//y 
                gr.DrawLine(new Pen(Color.White), 0 + 15, 550, 55 * i, 550);//x
                gr.DrawString(chX[i].ToString(), new Font("Arial", 8), new SolidBrush(Color.Black), 0 + 50 * i, 550); //x
            }
            for (int i = 0; i < chY.Length; i++)
            {
                gr.DrawString(chY[i].ToString(), new Font("Arial", 8), new SolidBrush(Color.Black), 0, 550 - 30 * i); //y
            }
           //string[] lines = File.ReadAllLines(@"H:\Программирование\SuperProg\20160616_101849_CsI_1950V_200ns_Na22_selfstar_PED.txt");
            string[] lines = File.ReadAllLines(@"C:\Users\Nikita\Desktop\SuperProg\20150115_124458_BaF2_1850V_25mV_2us_tyv_6db_Cs137_PED.txt");
            string text = "";
            
            text = lines[0];
            c = text.Split('    ').Length;
            textBox2.Text += c;
            //
            timer1.Interval = 1000;
            timer1.Enabled = true;
            timer1.Start();
            panel1.Refresh();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.07.2016, 16:05
Ответы с готовыми решениями:

Автоматическое обновление страницы в WebBrowser каждые 10 секунд
Доброго времени суток. Помогите кто знает. Возникла такая проблема: необходимо чтобы программа обновляла Web-страницу каждые 10 сек я...

Не работает обновление страницы WebBrowser каждые 10 секунд
Здравствуйте, подскажите пожалуйста, в чём проблема ? Таймер не работает. p.s. Я новичок в этом деле... using System; using...

Блокировка кнопки на 15 секунд через таймер
При нажатии на кнопку &quot;войти&quot; происходит событие и если 5 раз выходит ошибка, то необходимо на 15 секунд отключить кнопку &quot;войти&quot;...

1
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
01.07.2016, 17:27 2
Nikproga, самый простой способ: сделайте метод с этим самым циклом асинхронным (async), и в то место в коде, где надо подождать, await Task.Delay(время);. Ну или таймер используйте, и в его таких вызывайте Invalidate().

По текущему коду-у вас в событии Paint почему-то создаются какие-то графиксы:
C#
1
2
           Graphics gr = this.CreateGraphics();
            gr = panel1.CreateGraphics();
Зачем? Есть же e.Graphics, который вам нужен?
Читаются какие-то файлы, причем каждый раз целиком:
C#
1
 string[] lines = File.ReadAllLines(@"C:\Users\Nikita\Desktop\SuperProg\20150115_124458_BaF2_1850V_25mV_2us_tyv_6db_Cs137_PED.txt");
Читать файл при каждой перерисовке-это явно не есть хорошо. В данном обработчике долгие операции явно не стоит выполнять.
C#
1
 textBox2.Text += c;
И текстбоксы менять тоже в данном обработчике не слишком уместно. Там надо именно рисовать.

Добавлено через 2 минуты
Для того, чтобы заставить контрол прекратить мерцать, существуют разного рода костыли, например такой:
C#
1
2
3
4
5
6
7
8
        public static void SetDoubleBuffered(System.Windows.Forms.Control control, bool setting)
        {
            typeof(System.Windows.Forms.Control).InvokeMember("DoubleBuffered",
                System.Reflection.BindingFlags.SetProperty |
                System.Reflection.BindingFlags.Instance |
                System.Reflection.BindingFlags.NonPublic,
                null, control, new object[] { setting });
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.07.2016, 17:27
Помогаю со студенческими работами здесь

Обновление через таймер процессов
Здраствуйте. Есть программа диспетчер процессов подобная виндовс. Просматривая все процесы опуская ползунок через 4 секунды обновляет...

Выполнять действие каждые 10 секунд
Добрый вечер. Пишу прогу и столкнулся с проблемой. Имеется пустой текст бокс и кнопка. Смысл проги: каждые 10 секунд в переменную А...

Label появляется каждые 10 секунд
Подскажите как сделать чтобы label появляется каждые 10 секунд на 3 секунды?( через 3 секунды исчезает и через 10 опять появляется(цикл))?

Рандомное изображение каждые 10 секунд. C#
Привет всем. Хочу написать программу в которой в picturebox каждые 10 секунд обновляется картинка которую я сам закинул. Не могу связать...

Сохранение базы каждые 30 секунд
Сопсно вопрос, есть датагрид, человек в нем работает, работает и работает, а программа по тихому сама себе сохраняет в базу. Я как бы...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Winforstrap или красявый дизайн своими руками на HTML+JS+Winform­s
anomal6 04.03.2025
Сидел тут вечером ковырял проект на MAUI, и как же глупо создаются пакеты MSIX и система обновлений пакета публикации, но не об этом. Бывает нужен современный дизайн программы а писать на MAUI,. . .
Формат данных для симуляции физики, посредством распространённы­­­­­­­х не обученных моделей.
Hrethgir 04.03.2025
Что-то как-то снова потерялось, зато катангенсы закатангесились в одном сообщении. На днях писал, что планирую для работы апгрейдить (на этот раз удачно) девайс для работы (конкретно - здоровья для,. . .
Концепция variadic
CoderHuligan 04.03.2025
Мне не очень нравится (а кому это нравится?) что у нас есть отдельно компилятор, отдельно линковщик, причем со своим собственным командным языком. При этом усложнении надо знать помимо языка. . .
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class — два мощных инструмента для обуздания неизменяемых структур данных, каждый со своим уникальным подходом к решению этой задачи. История их появления весьма. . .
Создание производительны­­­х API с Java и gRPC
Wired 04.03.2025
В мире микросервисной разработки вопрос производительности часто становится краеугольным камнем. И хотя REST API давно завоевал сердца разработчиков своей простотой и интуитивностью, при высоких. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 — это настоящий прорыв в эволюции Java, который кардинально меняет правила игры. В этом релизе разработчики Oracle наконец-то довели до ума множество критически важных улучшений в. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Погружаясь в мир блокчейн-разработки на Java, разработчик получает доступ к внушительному арсеналу инструментов. В отличие от Solidity, который "заперт" в экосистеме Ethereum, Java предоставляет. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
WebAssembly (Wasm) эволюционировал из технологии для высокопроизводительных вычислений в браузере в мощный инструмент для облачных вычислений и оркестрации контейнеров. По сути, это бинарный формат. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) перевернули подход к разработке ПО, превратив его из разрозненных действий в единый поток от написания кода до деплоя. GitHub Actions и Jenkins. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Kubernetes стал неотъемлемой частью крупных проектов, но с ростом сложности инфраструктуры ручная проверка Pull Request превращается в настоящую головную боль. Традиционный подход банально не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru