Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
astati
0 / 0 / 1
Регистрация: 11.12.2011
Сообщений: 11
1

Один таймер запускает другой

12.12.2011, 05:02. Просмотров 834. Ответов 8
Метки нет (Все метки)

Привет.
Помогите сделать двойной таймер.
Есть форма на ней два combobox.
Надо чтобы при нажатии на кнопку запускался 1 таймер, который возьмет значение из combobox1.
А как только он достигнет 0 запускался второй таймер(берущий значение из combobox2).
Сам таймер должен "идти" от заданного время к нулю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2011, 05:02
Ответы с готовыми решениями:

Таймер не запускает событие
Здравствуйте. Чет не пойму, то ли я чего то не так делаю, то ли что ...

Как синхронизировать один таймер со вторым?
Работают 2 таймера синхронно. Второй должен отключаться, но при включении они...

Таймер вызывает событие только один раз
Доброго времени суток. Будтъте добры подскажите, затупил. Есть такой класс....

Как включить таймер одной кнопкой, а выключить другой
подскажите пожалуйста, как включить таймер одной кнопкой, а выключить другой?

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

8
antsa
18 / 18 / 4
Регистрация: 04.07.2010
Сообщений: 86
Завершенные тесты: 1
12.12.2011, 06:43 2
Насколько я помню таймер считает с нуля до заданного значения. А задаешь ты значение в combobox судя по всему.
0
kazachok
54 / 29 / 7
Регистрация: 28.02.2011
Сообщений: 105
12.12.2011, 08:58 3
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
31
32
33
34
35
36
37
38
39
40
41
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        int i;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.SelectedIndex = 0;
            comboBox2.SelectedIndex = 0;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
            i = Convert.ToInt32(comboBox1.Text);
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            i -= 1;
 
            if (i == 0)
            {
                i = Convert.ToInt32(comboBox2.Text);
                timer2.Enabled = true;
                timer1.Enabled = false;
                
            }
        }
 
        private void timer2_Tick(object sender, EventArgs e)
        {
            i -=1;
        }
    }
}
1
astati
0 / 0 / 1
Регистрация: 11.12.2011
Сообщений: 11
13.12.2011, 19:37  [ТС] 4
А как сюда добавить чтоб он показывал этот отсчет времени, а то не понятно работает он или нет.
0
kazachok
54 / 29 / 7
Регистрация: 28.02.2011
Сообщений: 105
13.12.2011, 19:58 5
Цитата Сообщение от astati Посмотреть сообщение
А как сюда добавить чтоб он показывал этот отсчет времени, а то не понятно работает он или нет.
ну проверить просто в label'e можно:
C#
1
label1.Text = i.ToString();
0
astati
0 / 0 / 1
Регистрация: 11.12.2011
Сообщений: 11
13.12.2011, 20:08  [ТС] 6
не показывает
и вопрос - для него нужно как писать время в комбоксе? по секундно или 1000?
0
Casper-SC
Эксперт .NET
3618 / 1827 / 355
Регистрация: 27.03.2010
Сообщений: 5,136
Записей в блоге: 1
13.12.2011, 20:28 7
Цитата Сообщение от antsa Посмотреть сообщение
Насколько я помню таймер считает с нуля до заданного значения. А задаешь ты значение в combobox судя по всему.
Таймер вообще ничего не считает. Он срабатывает через определённые интервалы времени и всё. А что тебе нужно делать каждый такой интервал, нужно писать в обработчике события Tick или Elapsed (смотря какой таймер).

Добавлено через 2 минуты
Цитата Сообщение от astati Посмотреть сообщение
не показывает
Весь код покажи. По другому толку нету от таких сообщений, никто не знает, что ты там и как делаешь.


Цитата Сообщение от astati Посмотреть сообщение
по секундно или 1000?
В миллисекундах. Вообще есть такая фишка, как наводишь курсор мыши на метод/событие и прочее, и видишь всплывающую подсказку описывающую функционал. На крайняк жми F1 и читай описание на MSDN.

Добавлено через 3 минуты
Цитата Сообщение от astati Посмотреть сообщение
Надо чтобы при нажатии на кнопку запускался 1 таймер, который возьмет значение из combobox1.
А как только он достигнет 0 запускался второй таймер(берущий значение из combobox2).
Сам таймер должен "идти" от заданного время к нулю.
А почему нужно именно 2 таймера? Можно и одним обойтись. Или именно 2 надо?
0
astati
0 / 0 / 1
Регистрация: 11.12.2011
Сообщений: 11
14.12.2011, 10:17  [ТС] 8
Цитата Сообщение от Casper-SC Посмотреть сообщение
Весь код покажи. По другому толку нету от таких сообщений, никто не знает, что ты там и как делаешь.
1 вариант
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace WinForm
{
    public partial class Form1 : Form
    {
        int i;
        public Form1()
        {
            InitializeComponent();
 
           
        }
        //*************************
        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.SelectedIndex = 0;
            comboBox2.SelectedIndex = 0;
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
            i = Convert.ToInt32(comboBox1.Text);
            label5.Text = i.ToString();
            
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            i -= 1;
 
            if (i == 0)
            {
                i = Convert.ToInt32(comboBox2.Text);
                timer2.Enabled = true;
                timer1.Enabled = false;
                
            }
        }
 
        private void timer2_Tick(object sender, EventArgs e)
        {
            i -=1;
        }
  
 
        //*************************
/*
        //обработчик события Tick
        void timer_Tick(object sender, EventArgs e)
        {
            //В текстбокс выводим значение timerCounter увеличенное на 1
            this.textBox1.Text = (--timerCounter).ToString(); //++
 
 
        }*/
                  
    }
}
2 вариант(только не знаю как сделать чтоб при следующем запуске таймера он заново с указанного времени отсчитывал а не продолжал текст бокс и timeCounter задать брать значения из comboBox)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace timtimer
{
    public partial class Form1 : Form
    {
        //============ТАЙМЕР=============//
       Timer timer = new Timer();
       int timerCounter = 10; //счётчик для таймера*/
       int timerCounter2 = 20;
        //===============================//
       // int i; //***
       
        public Form1()
        {
            InitializeComponent();
        
            timer.Interval = 1000; //интервал между срабатываниями 1000 миллисекунд
            timer.Tick += new EventHandler(timer_Tick); //подписываемся на события Tick
            timer.Start();
            timer2.Tick += new EventHandler(timer_Tick_2);
            }
    
        //обработчик события Tick
        void timer_Tick(object sender, EventArgs e)
        {
            //В текстбокс выводим значение timerCounter увеличенное на 1
            this.textBox1.Text = (--timerCounter).ToString(); //++
           
            if (timerCounter == 0)
            {
                timer.Enabled = false;
                timer.Stop();
                timer2.Start();
                
            }}
        void timer_Tick_2(object sender, EventArgs e)
        {
            this.textBox2.Text = (--timerCounter2).ToString(); //++
            if (timerCounter2 == 0)
            {
                timer2.Enabled = false;
                timer2.Stop();
                timer.Start();
            }
 
        }
}}
Цитата Сообщение от Casper-SC Посмотреть сообщение
В миллисекундах. Вообще есть такая фишка, как наводишь курсор мыши на метод/событие и прочее, и видишь всплывающую подсказку описывающую функционал. На крайняк жми F1 и читай описание на MSDN.
А как сделать так чтоб время указывалось в минутах, а программа сама переконвертировала их в миллисекунды?

Цитата Сообщение от Casper-SC Посмотреть сообщение
А почему нужно именно 2 таймера? Можно и одним обойтись. Или именно 2 надо?
Наверн можно и одним обойтись, если он сможет брать значения из разных combobox.
0
Casper-SC
Эксперт .NET
3618 / 1827 / 355
Регистрация: 27.03.2010
Сообщений: 5,136
Записей в блоге: 1
14.12.2011, 17:40 9
Так сойдёт?
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        const int firstConditionValue = 20;
        const int secondConditionValue = 10;
        const int startCounterValue = 20;
        Timer timer;
        int timerCounter; //счётчик для таймера
 
        public Form1()
        {
            InitializeComponent();
            
            timerCounter = startCounterValue;
            timer = new Timer();
            timer.Interval = 1000;
            timer.Tick += new EventHandler(timer_Tick);
        }
 
        void timer_Tick(object sender, EventArgs e)
        {
            if (timerCounter <= firstConditionValue && timerCounter > secondConditionValue)
            {
                label1.Text = timerCounter.ToString();
            }
            else if (timerCounter <= secondConditionValue && timerCounter > 0)
            {
                label2.Text = timerCounter.ToString();
            }
            else if (timerCounter == 0)
            {
                timer.Stop();
                ResetInfo();
            }
            timerCounter--;
        }
 
        private void btnStart_Click(object sender, EventArgs e)
        {
            if (!timer.Enabled)
            {
                btnStart.Text = "Стоп";
                timer.Start();
            }
            else
            {
                btnStart.Text = "Запуск";
                timer.Stop();
                ResetInfo();
            }
        }
 
        private void ResetInfo()
        {
            timerCounter = startCounterValue;
            label1.Text = string.Empty;
            label2.Text = string.Empty;
        }
 
        private int ToMilliseconds(int minutes)
        {
            return minutes * 60000; //minutes * 60 * 1000
        }
    }
}
Добавлено через 1 минуту
Цитата Сообщение от astati Посмотреть сообщение
А как сделать так чтоб время указывалось в минутах, а программа сама переконвертировала их в миллисекунды?
Смотри метод ToMilliseconds
1
14.12.2011, 17:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 17:40

Timer, наложение таймеров один на другой
public partial class Form1 : Form { Timer tm = new Timer(); ...

Как в строке заменить один символ на другой
Здравствуйте Подскажите пожалуйста как в строке можно заменить один символ на...

Как записать один файл в другой не с первой строки?
задача: дописать файл А в файл Б пропустив первые Х строк (т.е. файл А писать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru