Ejemplo n.º 1
0
        private void button1_Click(object sender, EventArgs e)
        {
            int hhh, hhhn;

            h     = Convert.ToInt32(textBox1.Text);
            m     = Convert.ToInt32(textBox2.Text);
            s     = Convert.ToInt32(textBox3.Text);
            zadan = Convert.ToString(textBox4.Text);
            Class1 rab1 = new Class1();

            hhh  = h * 3600 + m * 60 + s;
            hhhn = h * 3600 + m * 60 + s;
            while (hhh >= 0)
            {
                Thread.Sleep(1000);
                hhh         = rab1.Start1(hhh, hhhn, zadan);
                h           = hhh / 3600;
                m           = (hhh - h * 3600) / 60;
                s           = hhh - h * 3600 - m * 60;
                label1.Text = Convert.ToString(h);
                label3.Text = Convert.ToString(m);
                label5.Text = Convert.ToString(s);
                label1.Refresh();
                label3.Refresh();
                label5.Refresh();
            }

            h     = Convert.ToInt32(textBox5.Text);
            m     = Convert.ToInt32(textBox6.Text);
            s     = Convert.ToInt32(textBox7.Text);
            zadan = Convert.ToString(textBox8.Text);
            Class2 rab2 = new Class2();

            rab2.Nachalo += delegate     // обрабатываем события с помощью анонимных делегатов
            {
                MessageBox.Show("Начало отсчёта! " + zadan);
            };
            rab2.Konez += delegate                // добавление ссылки  на другое анонимное событие
            { MessageBox.Show("Обратный отсчёт завершён!"); };
            Deleg2 del = new Deleg2(rab2.Start1); //  Создаем переменную делегата и связываем c методом

            hhh  = h * 3600 + m * 60 + s;
            hhhn = h * 3600 + m * 60 + s;
            while (hhh >= 0)
            {
                hhh = del(hhh, hhhn, zadan); //сработал делегат
                if (hhh >= 0)
                {
                    h = hhh / 3600;
                    m = (hhh - h * 3600) / 60;
                    s = hhh - h * 3600 - m * 60;
                    Preob(h, m, s);
                }
            }

            h     = Convert.ToInt32(textBox10.Text);
            m     = Convert.ToInt32(textBox11.Text);
            s     = Convert.ToInt32(textBox12.Text);
            zadan = Convert.ToString(textBox9.Text);
            Class3 rab3 = new Class3();
            Deleg  del3 = (h1, m1, s1, zadan1) => h * 3600 + m * 60 + s - 1;//  Создаем переменную делегата с помощью лямбда-выражения

            rab3.Nach(zadan);
            while (h + m + s > 0)
            {
                Thread.Sleep(1000);

                hhh         = del3(h, m, s, zadan); //сработал делегат
                h           = hhh / 3600;
                m           = (hhh - h * 3600) / 60;
                s           = hhh - h * 3600 - m * 60;
                label1.Text = Convert.ToString(h);
                label3.Text = Convert.ToString(m);
                label5.Text = Convert.ToString(s);
                label1.Refresh();
                label3.Refresh();
                label5.Refresh();
            }
            rab3.Kon(zadan);
        }