Как сделать секундомер в C#

Эта программа представляет собой простой секундомер. Когда вы нажимаете кнопку «Пуск», программа меняет заголовок кнопки на «Стоп» и запускает Timer. По мере запуска секундомера Timer программа отображает прошедшее время. Нажмите кнопку «Стоп», чтобы остановить Timer.
Этот пример почти тривиален, но на самом деле возникает несколько интересных проблем.
В следующем коде показан обработчик события Click кнопки.
PythonЭтот код сначала переключает свойство Enable компонента Timer компонента, поэтому он запускается, если он остановлен и наоборот.
Далее код устанавливает свойство кнопки Text кнопки. Если Timer включен, тогда выполняется Timer, поэтому свойство Text кнопки должно быть «Стоп». Если Timer отключен, то Timer не работает, поэтому свойство Text кнопки должно быть «Start». (Обычно я не использую оператор?: потому что это сбив с толку, но в этом случае он сокращает код, и это то, что каждый программист на C# должен знать, как использовать, даже если вы его не используете.)
Наконец, этот код записывает текущее время в переменной StartTime.
Каждый раз, когда галочка секундомера Timer гаснет, для отображения прошедшего времени выполняется следующий обработчик событий.
PythonЭтот код получает прошедшее время, так как секундомер запускается путем вычитания времени начала с текущего времени.
Истекшая переменная TimeSpan имеет Days, Часы, Минуты, Секунды , и Milliseconds, чтобы узнать, сколько времени прошло. Каждое из этих значений не учитывает значения более высокого уровня. Например, если прошло 1 час и 10 минут, свойство Hour равно 1, а свойство Minutes равно 10. Свойство Minutes not 70 для представления всего прошедшего времени в минутах.
Класс TimeSpan также имеет TotalDays, TotalHours и аналогичные свойства для представления времени в одной единице. В этом примере TotalMinutes будет равным 70. Этот пример не использует свойства Total.
Если количество прошедших дней составляет не менее 1, код добавляет количество дней к переменной text.
Затем код преобразует число миллисекунд в десятые доли секунды. Это одно из мест, где этот пример немного сложнее. Выражение прошло. Миллисекунды / 100 обрезает результат. Например, если число миллисекунд равно 199, этот код обрезает результат на 1 десятую секунды.
Однако вы, вероятно, захотите округлить это до 2 десятых секунды. Вы можете сделать это с помощью дополнительного кода, но что произойдет, если число миллисекунд равно 999? Тогда вы обойдете это до 10 десятых секунды. Это означало бы, что вам нужно добавить еще 1 секунду к числу прошедших секунд. Но тогда, если количество прошедших секунд равно 59? Затем вам нужно будет добавить минута к количеству прошедших минут.
Вероятно, вы можете видеть, куда это направляется. Вам понадобятся специальные случаи, чтобы добавить дополнительные секунды, минуты, часы и дни. Обработка всех этих особых случаев делает код намного дольше и труднее читать и отлаживать. Этот секундомер просто обрезает число десятых. Результат может быть отключен на 0,05 секунды. Это всего лишь 1/20 секунды, и прошедшее время сокращается на эту сумму в течение небольшого промежутка времени, поэтому я хочу жить с ним, чтобы упростить код.
Фактически, вы можете сделать код секундомера еще проще, просто отображая значение elapsed.ToString (). К сожалению, это показывает прошедшее время в формате 1.02: 03: 04.0050000. Это дает необоснованное впечатление о точности времени.
Вы можете попытаться удалить конечные цифры, но тогда вы в основном усекаете миллисекунды. Вы можете попробовать округлить, но тогда у вас есть те же проблемы, что и раньше.
Чтобы сделать синтаксический анализ этого значения еще более сложным, время не соответствует согласованному формату. Например, оно не включает число дней этого числа равно 0. Оно также не включает миллисекунды, если они оказались равными 0.
Другой подход доступен в Visual Studio 2010 и более поздних версиях. В более ранних версиях метод TimeSpan класса TimeSpan не принимает никаких параметров и просто дает результат, аналогичный 1.02: 03: 04.0050000. В Visual Studio 2010 и более поздних версиях метод ToString может принимать строку форматирования. Строки стандартного формата отображают миллисекунды не менее 3-х цифр. Вы можете использовать строку пользовательского формата, например ts.ToString (@ "dd \: hh \: mm \: ss \ .f"), но тогда результат не распознается локалью. Если вам нужен секундомер для запуска в других странах, вам нужно будет определить страну и соответствующим образом скорректировать формат. По крайней мере, ToString (), а стандартные форматы, такие как ToString ("g"), являются языковыми, поэтому вам не нужно беспокоиться о стране.
Источник: http://csharphelper.com/blog/2016/12/make-a-stopwatch-in-c/
Отзывы (через Facebook):
Оставить отзыв с помощью аккаунта FaceBook:
Связанные списки относятся к простейшим и наиболее распространенным структурам данных. Массивы и связанные списки аналогичны, так как они хранят коллекции...
18 01 2021 16:44:45
Книга "1 С-программирование как дважды два. Самоучитель" основана на личном опыте предпринимательской деятельности автора в сфере 1 С-программирования. Начин...
17 01 2021 20:33:34
В этом примере показано, как получить изображение элемента управления. Поскольку форма является типом управления, тот же метод позволяет получить образ фор...
16 01 2021 1:40:52
Метод System.IO.Directory.GetFiles позволяет легко искать файлы в каталоге, соответствующем шаблону. К сожалению, он может искать только файлы, соответству...
15 01 2021 0:54:27
HTML-документы можно легко получить и обработать с помощью HTML DOM, который представляет собой HTML-документ в виде древовидной структуры. Когда HTML-доку...
14 01 2021 21:56:24
В этом примере сортируются слова по количеству букв. Он подсчитывает количество отдельных букв в списке слов и отображает слова и их подсчеты, отсортирован...
13 01 2021 9:22:51
Java - это язык программирования, который разработчики используют для создания приложений на ваших компьютерных устройствах. Sun Microsystems выпустила пер...
12 01 2021 18:28:29
Python обеспечивает очень простую систему упаковки, которая представляет собой просто расширение механизма модуля в каталог. Любая директория с файлом __in...
11 01 2021 0:13:11
В объектно-ориентированном программировании шаблон Singleton ограничивает создание экземпляра класса и гарантирует, что в JVM (виртуальная машина Java) сущ...
10 01 2021 7:29:16
В объектно-ориентированном программировании есть три основные особенности: инкапсуляция, наследование и полиморфизм. Инкапсуляция: инкапсуляция относится к...
09 01 2021 0:25:54
Эта книга представляет собой подробное учебное пособие для желающих освоить современную версию PHP. В книге описывается установка и конфигурирование PHP, о...
08 01 2021 4:16:30
В этом примере показано, как изменить ориентацию и поля печати в распечатке или предварительном просмотре печати. По умолчанию, когда вы показываете предва...
07 01 2021 22:53:23
Наиболее распространенным примером первой Java-программы является знаменитый Hello World! программа. Прежде чем перейти к первой программе Java, вы должны...
06 01 2021 1:13:27
Класс BufferedWriter обладает функциональностью записи буферов символов в файл. Он расширяет Writer, который является абстрактным классом для записи потоко...
05 01 2021 9:17:39
Числовое продвижение, также известное как « Неявное преобразование» или «автоматическое преобразование Java», где автоматическое преобразование значения мен...
04 01 2021 12:43:12
В этом примере показано, как вы можете отображать изображения, хранящиеся в базе данных Access в программе WPF. Вы можете сделать это с помощью связанных э...
03 01 2021 11:26:35
Это своего рода упражнение новичка в создании двух форм, работающих друг с другом, хотя оно поднимает некоторые проблемы, не связанные с новичком. Начинающ...
02 01 2021 17:20:56
Этот пример изменяет предыдущий пример Графически выбирает часы на C# , поэтому он использует класс симбиот. В этом примере показано, как использовать Pict...
01 01 2021 19:45:40
Предположим, у вас есть несколько элементов управления с обработчиками событий, которые выполняют аналогичные сложные задачи. Существует два общих подхода...
31 12 2020 7:30:43
Свойство innerHTML чрезвычайно популярно, поскольку оно обеспечивает простой способ полностью заменить содержимое элемента HTML. Другой способ сделать это...
30 12 2020 4:23:28
В этой книге отражен бесценный опыт ее автора как программиста на C++. Новые возможности этого языка программирования, появившиеся в стандартах C++11 и C++...
29 12 2020 20:24:46
Существует много ситуаций, когда вы хотите выполнить блок утверждений несколько раз в ваших приложениях. Петли могут выполнять блок кода несколько раз. Цик...
28 12 2020 16:49:39
Пример Использование лямбда-выражений в C# показало, как использовать лямбда выражения для сжатого создания анонимного метода, который принимает параметры...
27 12 2020 11:39:40
Часто полезно инициализировать ComboBox из перечисления, чтобы пользователь мог выбрать одно из значений перечисления. Вы можете ввести значение в ComboBox...
26 12 2020 9:52:42
Определение класса можно запросить во время вызова метода или при создании нового экземпляра с использованием нового выражения. NoClassDefFoundError означа...
25 12 2020 18:43:26
Существует много ситуаций, когда вы хотите выполнить блок утверждений несколько раз в ваших приложениях. Петли могут выполнять блок кода несколько раз. Цик...
24 12 2020 2:11:23
Java String charAt() возвращает символ, расположенный по указанному индексу в String. Строковые индексы начинаются с нуля и варьируются от 0 до длины() - 1...
23 12 2020 12:43:10
Книга посвящена разработке приложений для Windows, Mac OS X и Linux с использованием библиотеки Qt версии 5.3. Подробно рассмотрены возможности, предостав...
22 12 2020 20:40:55
Python имеет встроенную функцию open(), чтобы открыть файл, он возвращает что-то, называемое файловым объектом. Файловый объект содержит методы и атрибуты,...
21 12 2020 17:49:15
В этом примере показано, как использовать метод File.Replace для создания двухуровневой системы резервного копирования журнала. Пример Сделать файл журнала...
20 12 2020 17:16:55
Книга "1 С: Предприятие. Бухгалтерский учет. Секреты работы" посвящена системе программ ведения автоматизированного учета на предприятиях, в организациях и у...
19 12 2020 11:32:44
Как следует из названий, HashMap является ассоциативной Map, а HashSet - это просто Set. Но они совершенно разные конструкции. HashMap - это реализация инт...
18 12 2020 1:18:49
Время от времени мой компьютер запутывается и думает, что принтер отключен. Это не так уж плохо, за исключением того, что Windows не предоставляет простой...
17 12 2020 6:50:18
Эта программа позволяет масштабировать и прокручивать изображение, нарисованное программой. Программа содержит Panel с AutoScale, установленным в true. Вну...
16 12 2020 18:14:48
Этот краткий справочник по Python карманного типа обновлен с учетом версий 3.4 и 2.7 и очень удобен для наведения быстрых справок в процессе разработки про...
15 12 2020 4:52:38
Как и другие языки программирования, JavaScript также имеет локальные и глобальные переменные. В JavaScript объекты и функции также являются переменными. О...
14 12 2020 15:12:31
В этом примере показано, как рисовать звезды внутри многоугольника, подключая каждую M-ю вершину по мере ее рисования. Если многоугольник имеет N сторон, а...
13 12 2020 20:39:40
Статический метод принадлежит классу, а нестатический метод принадлежит объекту класса. Статические методы полезны, если у вас есть только один экземпляр,...
12 12 2020 12:26:59
Код устанавливает имя принтера, а затем вызывает метод PrintDocument объекта Print для немедленной отправки распечатки на этот принтер. Источник: http://cs...
11 12 2020 18:57:59
Обычно отладчик позволяет вам изучить, как работает программа достаточно эффективно, но иногда полезно использовать регистратор событий для записи событий...
10 12 2020 15:10:21
В этой статье мы узнаем о реализации алгоритма в C# Brute-Force.Brute-force search или исчерпывающий поиск, также известный как генерация и тест,...
09 12 2020 6:24:42
Кодировка символов сообщает компьютеру, как интерпретировать необработанные нули и единицы в реальных символах. В настоящее время существует множество разл...
08 12 2020 15:22:24
JDK является акронимом для Java Development Kit. Это набор программных компонентов, который используется для разработки приложений на основе Java, включает...
07 12 2020 14:22:15
Рассмотрены основные вопросы программирования на языках JAVA и С#, включая их сравнительное описание как двух важнейших и весьма сходных прикладных платфор...
06 12 2020 7:59:53
Класс System содержит несколько полезных полей и методов класса. Целью класса System является обеспечение доступа к системным ресурсам. Это последний класс...
05 12 2020 9:43:54
Различные культуры начинают неделю с другого первого дня недели. Например, некоторые культуры начинают неделю с понедельника, а другие начинают с воскресен...
04 12 2020 9:46:20
Есть много способов найти разницу между датами. Ниже приведен самый простой способ найти разницу между двумя датами. Вы можете просто взять число миллисеку...
03 12 2020 1:25:56
В Bash, If утверждения очень полезны. В этом разделе нашего урока вы узнаете, как вы можете использовать, If, else, elif, case инструкции в ваших сценариях Bash....
02 12 2020 8:15:52
В Unix он работает обычно следующим образом: Как самая первая строка вашего файла, используя путь для того, где интерпретатор Python установлен на вашей пл...
01 12 2020 20:28:27
Ошибки « Не удается найти символ» обычно возникают, когда вы пытаетесь ссылаться на необъявленную переменную в коде. Ошибка « Не удается найти символ» означа...
30 11 2020 0:10:53
Java Virtual Machine (JVM) - это спецификация, предоставляющая среду выполнения, в которой может быть запущен Java-байт-код. Как следует из названия, JVM д...
29 11 2020 0:14:30
В этом примере показано, как легко инициализировать элементы управления DataGridView, чтобы отобразить свойства элементов. В этом примере используется след...
28 11 2020 4:39:31
Пример Обработать общие события мыши TreeNode в C# показывает, как создать общий класс узлов, который может рисовать деревья с узлами, которые содержат что...
27 11 2020 14:55:55
В этом примере используются методы расширения для преобразования между байтовыми массивами и шестнадцатеричными строками. Он добавляет метод расширения ToH...
26 11 2020 23:14:10
Принятие решений является важной частью программирования. Он используется для указания порядка выполнения операторов. На этом уроке вы узнаете, как создава...
25 11 2020 6:39:13
В чем разница между Reader и InputStream в Java Процесс представляет собой экземпляр выполняемой компьютерной программы. Процесс может выполняться процессо...
24 11 2020 22:25:19
Сама природа Python делает задачу защиты исходного кода сложной, потому что ничто не может быть защищено от обратной инженерии. Python, являющийся интерпре...
23 11 2020 22:53:49
Обучение программе означает научиться решать проблемы с помощью кода. Эти простые примеры программирования полностью предназначены для начинающих, которые...
22 11 2020 17:59:19
Необходимость в переработке и дополнении предыдущего издания книги вызвана в первую очередь выходом в свет долгожданного для программистов всего мира едино...
21 11 2020 0:39:49
Библиотека GDI + предоставляет множество методов для рисования фигур, таких как прямоугольники, эллипсы, линии и дуги. К сожалению, он не обеспечивает мето...
20 11 2020 21:13:19
Наиболее распространенным примером первой Java-программы является знаменитый Hello World! программа. Прежде чем перейти к первой программе Java, вы должны...
19 11 2020 2:49:21
Оператор is позволяет определить, можно ли преобразовать объект в определенный тип. Например, предположим, что класс Student наследуется от Person и что st...
18 11 2020 19:35:17
DOM является основой почти всего, что работает JavaScript с браузером и веб-документами. Это интерфейс, который позволяет нам взаимодействовать с контентом...
17 11 2020 0:50:21
Не обязательно. Объект становится пригодным для сбора мусора, когда нет живых потоков, которые содержат ссылку на объект. Явное обнуление - это просто прак...
16 11 2020 23:56:24
PyChecker - это инструмент для поиска ошибок в исходном коде python. Он обнаруживает проблемы, которые обычно попадают в компилятор для менее динамических...
15 11 2020 7:11:56
7 практических занятий по программированию в 1 С 8.хх это пособие для освоения программирования и конфигурирования в системе 1 С: Предприятие 8.хх, на основе...
14 11 2020 13:32:19
Класс Java Scanner - это класс в пакете Java.util, который позволяет пользователю считывать значения различных типов. Это простой текстовый сканер, который...
13 11 2020 7:23:35
Следующий код создает методы расширения для строкового класса, который позволяет преобразовывать пробелы в строку «& amp; nbsp;» и этот URL кодировать и де...
12 11 2020 14:43:59
В этом примере показано, как вы можете указать поставщиков OLE DB, установленных в системе. ( Недавно мне пришлось запускать более старую программу в новой...
11 11 2020 8:54:53
Метод isinstance() проверяет, является ли объект экземпляром класса, тогда как метод issubclass() запрашивает, является ли один класс подклассом другого кл...
10 11 2020 16:46:29
В этом примере показано, как нарисовать ковер Sierpinski, тип фрактала, известный как прокладка. Должности Нарисуйте прокладку Серпинского в C# и...
09 11 2020 14:38:38
Данная книга является превосходным и эффективным учебным пособием для изучения языка программирования С# с нуля. Правила и приемы С# иллюстрируются програм...
08 11 2020 15:14:33
Пример Сделать постоянную цветовую палитру в C# показывает, как программа может использовать настройки для сохранения и восстановления цветовой палитры. Пр...
07 11 2020 7:29:24
Java RandomAccessFile обеспечивает несущественный доступ к файлам. Он ведет себя как большой массив байтов, хранящихся в файловой системе. Это означает, чт...
06 11 2020 4:39:19
Что такое конверсии в C#? Преобразование - это механизм преобразования значения одного типа в эквивалентное значение другого типа. Давайте рассмотрим ниже...
05 11 2020 7:21:53
В Java каждый объект имеет доступ к методу equals(), поскольку он наследуется от класса Object. Если два объекта равны в соответствии с методом equals (Obj...
04 11 2020 19:21:41
Прежде всего, мы должны понимать, что подразумевается под передачей по значению или передачей по ссылке. передается по ссылке Когда параметр передается по...
03 11 2020 6:25:20
В Java, объектах и примитивах есть две основные категории данных. Все члены данных и локальные переменные должны иметь тип данных, который является либо пр...
02 11 2020 10:50:40
В этом примере показано, как можно быстро преобразовать изображение в оттенки серого с помощью класса Bitmap32, описанного в сообщении Используйте класс Bi...
01 11 2020 2:11:41
Пример Формат файлов формата в К Б, М Б, Г Б и т. д. В C# показывает, как преобразовать число в строку, отформатированную в К Б, М Б и т. д. Этот пример делает...
31 10 2020 20:44:56
Следующий метод WordUnderMouse возвращает слово под мышью в RichTextBox. В коде используется метод RichTextBox управления GetCharIndexFromPosition, чтобы п...
30 10 2020 7:30:21
Вы не можете установить свойство Icon формы, равное растровому изображению. К счастью, достаточно легко создать значок из растрового изображения. В этом пр...
29 10 2020 22:44:27
Для многих программистов управление памятью Java является одной из наиболее привлекательных функций, потому что Java-программисту никогда не приходится име...
28 10 2020 16:49:25
Метод python sleep(), используемый для приостановки выполнения для заданного времени (в секундах). Мы можем использовать функцию ожидания python, чтобы ост...
27 10 2020 17:44:41
Как читать все .txt-файлы в папке Подсчет количества файлов в каталоге с помощью Java Источник: http://net-informations.com/Java/files/folder.htm...
26 10 2020 5:37:45
В зависимости от того, какой тип работы вы хотите, чтобы ваши сценарии выполнялись, вы можете в конечном итоге использовать арифметику много или не много. ...
25 10 2020 0:10:16
В сегодняшнем уроке мы разберем как сделать стрельбу в Unity 2D с использованием пула объектов (Object pool) для реализации этого менее затратно....
24 10 2020 16:52:35
Пример Нарисуйте цветное колесо на C# , рисует цвет колесо. Для этого он делает ряд точек по периметру круга, где каждая точка имеет разный цвет радуги. За...
23 10 2020 6:58:51
Parse error: syntax error, unexpected ',' in /home/users/9/9165884745/domains/flash-mx.ru/lessons/926.php on line 69