Обновление Label

223
03 марта 2018, 17:31

на форме1 нажимаю кнопку, она запускает таймер, после истечения времени запускается форма2 и поистечению времени уже там форма2 закрывается и на форме1 время должно восстановится, ну чтобы отображало в label, все более менее работает но не знаю куда пихнуть label для повторного отображения

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            LoadSettings();
        }
        Properties.Settings setts = new Properties.Settings();
        public Form2 f2 = new Form2();
        public static int minInterval;
        public static int minRelax;
        public static int sec;
        void LoadSettings()
        {
            Properties.Settings setts = new Properties.Settings();
            f3.comboBox1.SelectedIndex = setts.TimeInterval;
            f3.comboBox2.SelectedIndex = setts.TimeRelax;
        }
        void SaveSettings()
        {
            Properties.Settings setts = new Properties.Settings();
            setts.TimeInterval = f3.comboBox1.SelectedIndex;
            setts.TimeRelax = f3.comboBox2.SelectedIndex;
            setts.Save();
        }
        public void timer1_Tick(object sender, EventArgs e)
        {
            sec = sec - 1;
            if (sec == -1)
            {
                minInterval = minInterval - 1;
                sec = 59;
            }
            if (minInterval == 0 && sec == 0)
            {
                timer1.Enabled = false;
                Console.Beep(659, 100);
                Form1_Load(sender, e);
                f2.Show(); //вот мы открываем форму2
            }
            label2.Text = minInterval.ToString() + ":" + sec.ToString();
        }
        public void Form1_Load(object sender, EventArgs e)
        {
            LoadSettings();
            if (f3.comboBox1.SelectedIndex == 0)
            {
                Form1.minInterval = 5;
            }
            if (f3.comboBox2.SelectedIndex == 0)
            {
                Form1.minRelax = 1;
            }
        }
        private void buttonStart_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled)
            {
                timer1.Enabled = false;
                buttonStart.Text = "Старт";
                buttonRestart.Enabled = true;
            }
            else
            {
                timer1.Enabled = true;
                buttonStart.Text = "Стоп";
                buttonRestart.Enabled = false;
            }
        }
        private void buttonRestart_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            Form1_Load(sender, e);
            label2.Text = minInterval.ToString() + ":" + sec.ToString();
        }

**ФОРМА2**
public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        int sec;
        private void button1_Click(object sender, EventArgs e)
        {
            Console.Beep(659, 100);
            timer1.Enabled = false;
            //Form1 f1 = new Form1(); //это не работает (не понимаю)
            //f1.timer1.Enabled = true; //это не работает (не понимаю)
            this.Close();
            //и вот тут после закрытия формы2 должен перейти к таймеру формы1, чтобы он опять работал. 

form1.timer1_Tick(sender, e); //это типа хочу перейти так }

    }
Answer 1

В Form2 уберите создание новых экземпляров Form1.

    public void timer1_Tick(object sender, EventArgs e)
    {
        sec = sec - 1;
        if (sec == -1)
        {
            minInterval = minInterval - 1;
            sec = 59;
        }
        if (minInterval == 0 && sec == 0)
        {
            timer1.Enabled = false;
            Console.Beep(659, 100);
            Form1_Load(sender, e);
            f2.ShowDialog();
            LoadSettings();
            SetTimeIfZero();
            timer1.Enabled=f2.timerSet;
            f2.Dispose();
        }
        label2.Text = minInterval.ToString() + ":" + sec.ToString();
    }
    public void Form1_Load(object sender, EventArgs e)
    {
        LoadSettings();
        SetTimeIfZero();
    }
    private void SetTimeIfZero()
    {
        if (f3.comboBox1.SelectedIndex == 0)
            Form1.minInterval = 5;
        if (f3.comboBox2.SelectedIndex == 0)
            Form1.minRelax = 1;
    }

В Form 2 добавьте переменную public bool timerSet=false; и в button1_Click (Form2) добавьте timerSet=true;

READ ALSO
C#. Как переназначить кнопку закрытия программы(крестик в углу)?

C#. Как переназначить кнопку закрытия программы(крестик в углу)?

Добрый деньПодскажите пожалуйста как переназначить кнопку закрытия программы(крестик в углу)? Хочу повесить на нее другое действие

191
Как изменять элемент массива на 1

Как изменять элемент массива на 1

Нужно, чтобы первый элемент в массиве менялся на 1 каждый раз, когда выполняется функция saveПри этом, если запросить первый элемент массива...

206
Проверка массива в массиве и удаление элементов

Проверка массива в массиве и удаление элементов

Необходимо найти в массиве элементы (тоже массивы) с повторяющимся элементом 0 и отсеять их из общего массива

189
Шифрование keccak256 короткая версия

Шифрование keccak256 короткая версия

Есть ли сокращенные до одного файла библиотеки шифрования keccak256? Просто что не смотрю все библиотеки в несколько файлов, и с набором 512, 384 и тп

181