Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
2 / 2 / 0
Регистрация: 19.11.2011
Сообщений: 52
.NET 4.x

Определить время после клика по кнопке

24.08.2012, 01:52. Показов 4345. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть текстобокс, там вводится число далее оно умнажается на 60, затем на 10000 и передаётся полученное число в миллисекундах в таймер после чего стартует, это работает нормально, решил подключить счетчик сколько прошло от начала нажатия на кнопку, но что-то у меня счетчик пишет что прошла 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
        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime date1 = new DateTime(0, 0);
            date1 = date1.AddMilliseconds(1);
            textBox2.Text = date1.ToString("mm:ss:fff");
 
            timer1.Stop();
            label1.Text = "123";
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string s = textBox1.Text;
            int i = int.Parse(s);
 
            int b;
            int c;
 
            c = i * 60;
            b = c * 1000;
 
            timer1.Interval = b;
            //timer1.Start();
            if (timer1.Enabled == true)
                timer1.Enabled = false;
            else
                timer1.Enabled = true;
 
        }
 
 
        private void textBox1_KeyPress_1(object sender, KeyPressEventArgs e)
        {
            if (!(Char.IsDigit(e.KeyChar)))
            {
                if (e.KeyChar != (char)Keys.Back)
                {
                    e.Handled = true;
                }
            }
 
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.08.2012, 01:52
Ответы с готовыми решениями:

Swing. Во время выполнения программного клика по кнопке (doClick), не отображаются остальные кнопки
Совсем новичок в Swing, возможно не до конца понимаю потоки или еще что-то. В общем, такая проблема -- класс Field представляет собой окно,...

Убрать display none после клика по кнопке
Есть такой код на странице <div id=""closetext" style="display:none;">Спасибо</div> <div class="hiddenBlock"...

Как записать в кэш после клика по кнопке?
Всем привет! Как записать в кэш после клика по кнопке и если у человека существует этот кэш, то вывести ошибку. Но если он перейдёт с...

24
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
24.08.2012, 09:09
C#
1
2
3
4
5
        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime date1 = new DateTime(0, 0);
            date1 = date1.AddMilliseconds(1);
            textBox2.Text = date1.ToString("mm:ss:fff");
это что ли?
ну все правильно, ты внутри тика запускаешь свой "таймер", доавляешь 1 милисекунду и выводишь
получается 1 милисекунда
логично да?
а чтобы мерять между нажатием на кнопку и тиком мож его надо стартовать при нажатии на кнопку не?)
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
24.08.2012, 09:09
C#
1
2
3
4
5
        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime date1 = new DateTime(0, 0);
            date1 = date1.AddMilliseconds(1);
            textBox2.Text = date1.ToString("mm:ss:fff");
это что ли?
ну все правильно, ты внутри тика запускаешь свой "таймер", доавляешь 1 милисекунду и выводишь
получается 1 милисекунда
логично да?
а чтобы мерять между нажатием на кнопку и тиком мож его надо стартовать при нажатии на кнопку не?)
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
24.08.2012, 09:10
C#
1
2
3
4
5
        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime date1 = new DateTime(0, 0);
            date1 = date1.AddMilliseconds(1);
            textBox2.Text = date1.ToString("mm:ss:fff");
это что ли?
ну все правильно, ты внутри тика запускаешь свой "таймер", доавляешь 1 милисекунду и выводишь
получается 1 милисекунда
логично да?
а чтобы мерять между нажатием на кнопку и тиком мож его надо стартовать при нажатии на кнопку не?)
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
24.08.2012, 09:12
C#
1
2
3
4
5
        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime date1 = new DateTime(0, 0);
            date1 = date1.AddMilliseconds(1);
            textBox2.Text = date1.ToString("mm:ss:fff");
вот это счетчик что ли?
ну все правильно, прямо внутри тика создаешь его, добавляешь милисекунду, выводишь
получается милисекунда
логично да?
чтобы он мерял от клика по кнопке надо бы его создавать/запускать в этом клике ога?
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
24.08.2012, 09:13
C#
1
2
3
4
5
        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime date1 = new DateTime(0, 0);
            date1 = date1.AddMilliseconds(1);
            textBox2.Text = date1.ToString("mm:ss:fff");
вот это счетчик что ли?
ну все правильно, прямо внутри тика создаешь его, добавляешь милисекунду, выводишь
получается милисекунда
логично да?
чтобы он мерял от клика по кнопке надо бы его создавать/запускать в этом клике ога?
0
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
24.08.2012, 09:21
А что так сложно то?
Чтобы узнать сколько прошло с момента нажатия достаточно просто влючить таймер. К примеру, по нажатию включаем, по второму нажатию выключаем, и в textBox останется сколько прошло от нажатия до нажания.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    public partial class Form1 : Form
    {
        long i = 0;
        public Form1()
        {
            InitializeComponent();
            timer1.Interval = 10;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            i = 0;
            timer1.Enabled = !timer1.Enabled; 
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            i+= timer1.Interval;
            textBox1.Text = i.ToString(); 
        }
    }
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
24.08.2012, 09:28
не ну нормально да?( писал сообщение - ошибка 504, обновляю главную - сообщения нет, пишу заново - ошибка 504
а тут выяснилось что и писал я 4 раза, а не 2 и еще и не склеились модеры поправьте плз
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2012, 09:39
Rockedit, может вместо таймеров просто время нажатия хранить и по щелчку поситать интервал и будет счастье?
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
24.08.2012, 09:46
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
может вместо таймеров просто время нажатия хранить и по щелчку поситать интервал и будет счастье?
Поддерживаю! Ведь второго щелчка может и не быть!
0
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
24.08.2012, 10:02
Согласен с вами полностью) Я просто так понял, что автор именно таймер хочет использовать. Если я ошибаюсь, то однозначно вариант - CyBOSSeR.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.08.2012, 11:11
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Windows.Forms;
 
namespace ButtonTime
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private DateTime dt = DateTime.Now;
 
        private void button1_Click(object sender, EventArgs e)
        {
            var now = DateTime.Now;
            textBox1.Text = (now - dt).TotalMilliseconds.ToString();
            dt = now;
        }
    }
}
0
2 / 2 / 0
Регистрация: 19.11.2011
Сообщений: 52
24.08.2012, 13:01  [ТС]
Модератор не совсем правильно переименовал тему, мне нужно считать после 1 клика по кнопке.

А насчет времени по таймеру - думал можно посчитать только таймером сколько прошло после нажатия на кнопку.
Сейчас всё попробую, что предложили.

Добавлено через 10 минут
Что-то видимо мой ход мыслей никто не понял, либо это я уже запутался.

Есть таймер, который активируется после нажатия на кнопку, в это время в текст боксе/лейбеле должно отображаться сколько прошло в секундах/минутах например, можно в миллисекундах - переведу сам.

Отображаться должно по секундам, как секундомер например.

Думаю так понятней стало меня
0
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
24.08.2012, 13:09
Ну дык я так и написал. только 10 интервал поменяй на 1000 и будет тебе в секундах
при выводе в textBox дели на 1000 и округляй к примеру.
0
29 / 27 / 4
Регистрация: 16.11.2011
Сообщений: 147
24.08.2012, 14:15
C#
1
2
3
4
5
6
7
8
using System.Diagnostics;
 
StopWatch sw = new StopWatch();
sw.AutoFlush = true;
sw.Start();
//код
sw.Stop();
textBox.Text = sw.ElapsedMilliseconds.ToString();
как-то так не?)

StopWatch sw делаем глобальным. потом в нужных местах вызываем sw.Start(); и sw.Stop(); и выводим sw.ElapsedMilliseconds;
0
146 / 143 / 32
Регистрация: 21.01.2012
Сообщений: 545
24.08.2012, 14:19
C#
1
2
3
4
5
6
7
8
9
10
11
12
static DateTime Start;
private void button_Click(object sender, EventArgs e)
{
    DateTime End = DateTime.Now;
    if (Start==null)
        Start = End;
    else 
    {
        TextBox1.Text = (End - Start).TotalMilliseconds;
        Start = End;
    } 
}
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.08.2012, 17:27
GODofART, я вас, кажется. понял. Ну примерно так:
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
using System;
using System.Windows.Forms;
 
namespace ButtonTime
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            timer.Interval = 10;
            timer.Tick += TimerTick;
        }
 
        private void TimerTick(object sender, EventArgs e)
        {
            textBox1.Text = (++ms/100.0).ToString();
        }
 
        private Timer timer = new Timer();
        private long ms = 0;
 
        private void button1_Click(object sender, EventArgs e)
        {
            timer.Enabled = !timer.Enabled;
            if (!timer.Enabled)
                timer = new Timer();
        }
    }
}
0
2 / 2 / 0
Регистрация: 19.11.2011
Сообщений: 52
24.08.2012, 17:48  [ТС]
Хм, только не верно считает.
Прошло 60 секунд по таймеру1, а по таймеру2 (ваш таймер так назовём) только 38 с чем-то.

Добавлено через 2 минуты
В данный момент у меня такой код:
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Timeroff
{
    public partial class Form1 : Form
    {
 
 
        public Form1()
        {
            InitializeComponent();
            timer2.Interval = 10;
            timer2.Tick += TimerTick;
        }
 
 
        private void TimerTick(object sender, EventArgs e)
        {
            textBox2.Text = (++ms / 100.0).ToString();
        }
 
        private Timer timer = new Timer();
        private long ms = 0;
        private void timer1_Tick(object sender, EventArgs e)
        {
           timer1.Stop();
           label1.Text = "123";
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string s = textBox1.Text;
            int i = int.Parse(s);
 
            int b;
            int c;
 
            c = i * 60;
            b = c * 1000;
            timer1.Interval = b;
            if (timer1.Enabled == true)
                timer1.Enabled = false;
            else
                timer1.Enabled = true;
 
            {
                timer.Enabled = !timer.Enabled;
                if (!timer.Enabled)
                    timer = new Timer();
            }
 
        }
 
 
        private void textBox1_KeyPress_1(object sender, KeyPressEventArgs e)
        {
            if (!(Char.IsDigit(e.KeyChar)))
            {
                if (e.KeyChar != (char)Keys.Back)
                {
                    e.Handled = true;
                }
            }
 
        }
 
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void timer2_Tick(object sender, EventArgs e)
        {
 
         
 
        }
 
 
 
 
 
 
    }
}
Возможно где-то я нарушил порядок действий.
0
29 / 27 / 4
Регистрация: 16.11.2011
Сообщений: 147
24.08.2012, 18:53
блин, я уже сам запутался. вам что надо то? секундомер?

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
using System;
using System.Drawing;
using System.Diagnostics;
using System.Windows.Forms;
 
namespace авуа
{
    public partial class Form1 : Form
    {
        private static int timer_interval = 10000;
        private static int current_val = 0;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Interval = timer_interval; //10 секунд
            timer2.Interval = 1; //1 миллисекунда (таймер нужен для обновления текстбокса)
 
            timer1.Start();
            timer2.Start();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Stop();
            timer2.Stop();
            MessageBox.Show("Время вышло! Прошло " + textBox1.Text + " миллисекунд.");
        }
 
        private void timer2_Tick(object sender, EventArgs e)
        {
            if (current_val < timer_interval)
            {
                current_val++;
                textBox1.Text = current_val.ToString();
            }
            else timer2.Stop();
        }
    }
}
Добавлено через 10 минут
GODofART, не нравится мне такой код

C#
1
2
3
4
5
6
7
private void button1_Click(object sender, EventArgs e)
{
    timer1.Interval = int.Parse(textBox1.Text) * 60000;
    timer.Enabled = !timer.Enabled;
 
    if (!timer.Enabled) timer = new Timer();
}
Добавлено через 13 минут
хм. сейчас сам проверил, тоже неправильно считает. интервал таймера - 10 сек, а в текстбоксе 640 миллисек было. я думаю полной точности вы не добьетесь так как часть времени тратится на само "общение" с текстбоксом...
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.08.2012, 18:57
так как часть времени тратится на само "общение" с текстбоксом...
this.
Вот немного исправленный вариант
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
using System;
using System.Windows.Forms;
 
namespace ButtonTime
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            _timer.Interval = 10;
            _timer.Tick += TimerTick;
            _interval = TimeSpan.FromMilliseconds(_timer.Interval);
        }
 
        private Timer _timer = new Timer();
        private TimeSpan _ts;
        private readonly TimeSpan _interval;
 
        private void TimerTick(object sender, EventArgs e)
        {
            textBox1.Text = _ts.ToString();
            _ts += _interval;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            _timer.Enabled = !_timer.Enabled;
            if (!_timer.Enabled)
            {
                _timer = new Timer();
                _ts = TimeSpan.FromMilliseconds(0);
            }
        }
    }
}
Изменяя значение интервала с 10 можно регулировать скорость опроса, но чем больше она будет, тем сильнее будет задержка (т.к. вызывается очень много всевозможных функций, и за 1мс они явно не выполняются)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.08.2012, 18:57
Помогаю со студенческими работами здесь

Изменить текст в TextBlock после клика на кнопке. MVVM подход. (Перевод кода с F#)
Хотел бы разобраться с MVVM подходом в C# на небольшом примере: Есть кнопка, по нажатию на которую, текст в TextBlock должен...

Как сделать, чтобы после клика по кнопке, появилась другая кнопка(без обновления страницы)
Всем привет! Как сделать, чтобы после клика по кнопке, появилось текстовое поле и другая кнопка. И чтобы без обновлений.

Событие клика по кнопке
Всем привет! что то не догоняю как отловить событие клика по кнопке? вот код моей программы package...

Обработчик клика по кнопке!
Всем доброго времени суток!!! Помогите пожалуйста!!!!!!!! Существует отчет в Access, т.к. &quot;Поле список&quot; не дает нужного,...

Обработка клика по кнопке
В msdn сказано например ,для BN_CLICKED BN_CLICKED notification code ... wParam ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru