Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Пеерзапуск открытой формы по истечении таймера
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Heckfu_87 Heckfu_87 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.03.2018
По умолчанию Пеерзапуск открытой формы по истечении таймера - 08.10.2018, 14:30

Здорово, ребята!!!
Как сделать, чтобы по истечении времени открытая форма перзагружалась???

cpp Код:
public: System::Void Form1_Shown(System::Object^  sender, System::EventArgs^  e) {

//Здесь разные операторы...

            System::Windows::Forms::Timer ^myTimer=gcnew System::Windows::Forms::Timer();
            myTimer->Interval=86400000;
           
                    myTimer->Enabled=true;
                   
                   
                    myTimer->Start();
                   
                    myTimer->Tick+=gcnew EventHandler(this, что сюда вписать???);
           
           
         }
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,413
Сказал(а) спасибо: 22
Поблагодарили 940 раз(а) в 924 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 09.10.2018, 20:03

Цитата:
Сообщение от Heckfu_87 Посмотреть сообщение
открытая форма перзагружалась???
ЗА-ЧЕМ?


Как прикреплять картинки к сообщениям: http://www.hardforum.ru/t116562
Ответить с цитированием
  (#3 (permalink)) Старый
Heckfu_87 Heckfu_87 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.03.2018
По умолчанию 10.10.2018, 14:05

Вообщем, есть программа:
1) Запускается главная форма Form, считываются данные по приборам из файла txt с заполнением их в элементы CheckedListBox. Одновременно выявляются приборы с истекающим через неделю сроком поверки.
2) Если такие приборы выявляются, то происходит запуск Form3 с оповещением, что есть приборы с истекающим через 7 дней сроком поверки. В Form3 есть кнопка «Детали», после нажатия на которую запускается Form2, где также в элементах CheckedListBox появляются приборы с истекающим сроком поверки.
Предполагается перезапуск главной формы с интервалом в 24 часа (программа будет открыта всю рабочую неделю на рабочем ПК), т.к. с каждым днем близится окончание срока поверки того или иного прибора, и при наступлении такого события будет отрабатываться вышеописанный алгоритм либо не произойдет ничего и «побежит» следующий 24-часовой интервал и т.д.
Так вот, перезапуска главной формы я добился, но при тестировании программы пояаилась проблема, которую я никак не могу решить:
я ставлю, например, myTimer->Interval=10000 и добавляю прибор с истекающим сроком поверки. Но в свою очередь при очередном запуске Form3 и нажатии кнопки «Детали», Form3 тут же перезапускается и перезапускается далее при очередном нажатии на кнопку «Детали». И появляются Form2 столько же раз. И количество таких перезапусков подряд увеличивается с каждым новым интервалом.

Вот код Form1_Show:
cpp Код:
public: System::Void Form1_Shown(System::Object^  sender, System::EventArgs^  e) {
                   
                   
               
            myTimer->Tick+=gcnew EventHandler(this, &Form1::Form1_Shown);
             myTimer->Enabled=true;
                    myTimer->Interval= 86400000; // 24 часа
                    myTimer->Start();

 
//---------------------------------------------------------------------------------------------------------
    /*Чтение из файла данных при загрузке формы с последующим заполнением информации в checkedListBox1*/       
    …
//--------------------------------------------------------------------------------------------------------     
             
    /*Считывание из файла  данных по всем средствам диагностики в массив типа                               array<String^> ^mas1=gcnew array<String^>(this->checkedListBox1->Items->Count)для дальнейшего   выявления средств диагностики с     выходящим сроком поверки*/
           
    …
             
//-------------------------------------------------------------------------------------------------------------
    /*Выявление средств с выходящим сроком поверки и запуска Form3
    для оповещения об этом*/

           
System::Windows::Forms::DialogResult dr;
            Form3 ^f3=gcnew Form3();
                Form2 ^f21=gcnew Form2();
            System::DateTime today=System::DateTime::Now;
                       
            System::DateTime toDay= today.AddDays(7);
            String ^mas1string="";
            String ^todayString=toDay.ToString("ddMMyyyy", DateTimeFormatInfo::CurrentInfo);
             
                 int n=0, n1=0;
             for(int y=0; y<i; y++)
             {
                 …
                if(условие выявления средств с выходящим сроком поверки)
                {
                                       
                    dr=f3->ShowDialog();
                    myTimer->Stop();
                   
                }
               

             } 
            if(dr==System::Windows::Forms::DialogResult::OK)
            {
               
                myTimer->Enabled=true;
                myTimer->Start();
               
            }
           
         }
Ответить с цитированием
  (#4 (permalink)) Старый
Heckfu_87 Heckfu_87 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.03.2018
По умолчанию 10.10.2018, 14:07

Я пробовал вместо Form3 использовать MessageBox, но не помогло...
Ответить с цитированием
  (#5 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,413
Сказал(а) спасибо: 22
Поблагодарили 940 раз(а) в 924 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 10.10.2018, 14:09

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


Как прикреплять картинки к сообщениям: http://www.hardforum.ru/t116562
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Heckfu_87 Heckfu_87 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.03.2018
По умолчанию 10.10.2018, 14:23

Спаисбо, а вы не могли бы примерно, хоть на С#, написать, как это выглядит.
Если для этого нужны ... средства, то это не проблема (желательно на карту "Сбербанк")........
Ответить с цитированием
  (#7 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,413
Сказал(а) спасибо: 22
Поблагодарили 940 раз(а) в 924 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 10.10.2018, 16:51

csharp Код:
using System;
using System.Windows.Forms;

namespace WindowsAppHeckfu87
{
    public partial class Form1 : Form
    {
        private Timer mTimer;

        public Form1()
        {
            InitializeComponent();

            this.mTimer = new Timer() { Interval = 60 * 60 * 1000 };
            this.mTimer.Tick += this.OnTimerTick;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.LoadData();
            this.mTimer.Start();
        }

        private void OnTimerTick(object sender, EventArgs e)
        {
            this.LoadData();
        }

        private void LoadData()
        {
        }
    }
}


Как прикреплять картинки к сообщениям: http://www.hardforum.ru/t116562
Ответить с цитированием
  (#8 (permalink)) Старый
Heckfu_87 Heckfu_87 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.03.2018
По умолчанию 10.10.2018, 19:44

Огромное спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Программа работает как часы.
Кстати, кому нужно, вот как это выглядит в С++:
cpp Код:
#pragma once

#include "Form2.h"
#include "Form3.h"
namespace Поверкасредствдиагностики {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace System::IO;
    using namespace System::Text;
    using namespace System::Globalization;
    using namespace System::Media;
    using namespace System::Timers;
    /// <summary>
    /// Сводка для Form1
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //

             
                myTimer->Interval=15000;
                myTimer->Tick+=gcnew EventHandler(this, &Form1::timer_Tick);
           
           
        }

    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
   
   
    private: System::Windows::Forms::TextBox^  textBox2;
   
//Объявление прочик компонениов…   
   
     static System::Windows::Forms::Timer ^myTimer=gcnew System::Windows::Forms::Timer();

          /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>


#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            …

        }

#pragma endregion
   
private: System::Void LoadData()
        {
           //Здесь содержимое из Form1_Shown... (см. #3)
        }
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {

          this->LoadData();
             this->myTimer->Start();           
         }

private: System::Void timer_Tick(System::Object^  sender, System::EventArgs^  e) {
             
             this->LoadData();

         }
}

Последний раз редактировалось Heckfu_87; 10.10.2018 в 19:47 Причина: Дополнить ответ
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как узнать пароль на открытой странице margaritka1288 Софт и программы 5 08.01.2013 05:49
Удаление таймера daniilpetrov C++ Builder 3 04.08.2012 12:04
Тип таймера daniilpetrov C++ Builder 2 23.10.2011 05:34
Динамический шаг таймера Garet Вопросы начинающих программистов 0 19.05.2011 15:04
Nokia сделает Symbian открытой pantoha Новости 2 31.10.2008 23:32
Как запомнить путь к последней открытой папке BBDragon Visual C++ 8 28.08.2008 13:26
Помогите с WiFi (TP-LINK), не подключаются компьютеры к открытой сети. @ndrei Любые вопросы от новичков 4 15.08.2008 10:11
исчезает изображение при открытой крышке Александр600 Ноутбуки 10 15.04.2007 16:38
Создание таймера на С++ 1247 C++ Builder 5 22.01.2006 02:25
Создание таймера на С++ Di Вопросы начинающих программистов 1 25.09.2004 16:26
Как взять значение ячейки уже открытой книги? Nikl Visual Basic 0 14.08.2004 17:37
При обращении к компонентам дочерней формы из главной формы программа выдает ошибку AHDPE C++ Builder 6 12.04.2004 12:02



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов