Путь разработчика    

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

eda2480d

Эта программа представляет собой простой секундомер. Когда вы нажимаете кнопку «Пуск», программа меняет заголовок кнопки на «Стоп» и запускает 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:

Операции Java LinkedList

Связанные списки относятся к простейшим и наиболее распространенным структурам данных. Массивы и связанные списки аналогичны, так как они хранят коллекции...

18 01 2021 16:44:45

1С-программирование как дважды два. Самоучитель (Михайлов Сергей)

Книга "1 С-программирование как дважды два. Самоучитель" основана на личном опыте предпринимательской деятельности автора в сфере 1 С-программирования. Начин...

17 01 2021 20:33:34

Как получить изображение элемента управления, формы или клиентской области формы в C#

В этом примере показано, как получить изображение элемента управления. Поскольку форма является типом управления, тот же метод позволяет получить образ фор...

16 01 2021 1:40:52

Найти файлы, которые соответствуют нескольким шаблонам в C#

Метод System.IO.Directory.GetFiles позволяет легко искать файлы в каталоге, соответствующем шаблону. К сожалению, он может искать только файлы, соответству...

15 01 2021 0:54:27

Как динамически добавлять элементы html с помощью JavaScript?

HTML-документы можно легко получить и обработать с помощью HTML DOM, который представляет собой HTML-документ в виде древовидной структуры. Когда HTML-доку...

14 01 2021 21:56:24

Сортировка слов по количеству букв в C#

В этом примере сортируются слова по количеству букв. Он подсчитывает количество отдельных букв в списке слов и отображает слова и их подсчеты, отсортирован...

13 01 2021 9:22:51

Что такое Java

Java - это язык программирования, который разработчики используют для создания приложений на ваших компьютерных устройствах. Sun Microsystems выпустила пер...

12 01 2021 18:28:29

Что такое __init__.py для Python?

Python обеспечивает очень простую систему упаковки, которая представляет собой просто расширение механизма модуля в каталог. Любая директория с файлом __in...

11 01 2021 0:13:11

Что такое singleton класс в Java?

В объектно-ориентированном программировании шаблон Singleton ограничивает создание экземпляра класса и гарантирует, что в JVM (виртуальная машина Java) сущ...

10 01 2021 7:29:16

Является ли JavaScript истинным языком ООП?

В объектно-ориентированном программировании есть три основные особенности: инкапсуляция, наследование и полиморфизм. Инкапсуляция: инкапсуляция относится к...

09 01 2021 0:25:54

PHP 5 для начинающих (Дэйв У. Мерсер, Аллан Кент, Стивен Д. Новицки)

Эта книга представляет собой подробное учебное пособие для желающих освоить современную версию PHP. В книге описывается установка и конфигурирование PHP, о...

08 01 2021 4:16:30

Изменение ориентации и полей печати в C#

В этом примере показано, как изменить ориентацию и поля печати в распечатке или предварительном просмотре печати. По умолчанию, когда вы показываете предва...

07 01 2021 22:53:23

Hello World! Первая программа на Java

Наиболее распространенным примером первой Java-программы является знаменитый Hello World! программа. Прежде чем перейти к первой программе Java, вы должны...

06 01 2021 1:13:27

Класс BufferedWriter в Java

Класс BufferedWriter обладает функциональностью записи буферов символов в файл. Он расширяет Writer, который является абстрактным классом для записи потоко...

05 01 2021 9:17:39

Что такое числовое продвижение? Java

Числовое продвижение, также известное как « Неявное преобразование» или «автоматическое преобразование Java», где автоматическое преобразование значения мен...

04 01 2021 12:43:12

Отображать изображения в базе данных Access в WPF и C#

В этом примере показано, как вы можете отображать изображения, хранящиеся в базе данных Access в программе WPF. Вы можете сделать это с помощью связанных э...

03 01 2021 11:26:35

Как сделать две формы открытыми друг друга в C#

Это своего рода упражнение новичка в создании двух форм, работающих друг с другом, хотя оно поднимает некоторые проблемы, не связанные с новичком. Начинающ...

02 01 2021 17:20:56

Как использовать симбиоз для графического выбора часов в C#

Этот пример изменяет предыдущий пример Графически выбирает часы на C# , поэтому он использует класс симбиот. В этом примере показано, как использовать Pict...

01 01 2021 19:45:40

Использование обработчика событий для нескольких элементов управления в C#

Предположим, у вас есть несколько элементов управления с обработчиками событий, которые выполняют аналогичные сложные задачи. Существует два общих подхода...

31 12 2020 7:30:43

Каковы недостатки использования InnerHTML в JavaScript?

Свойство innerHTML чрезвычайно популярно, поскольку оно обеспечивает простой способ полностью заменить содержимое элемента HTML. Другой способ сделать это...

30 12 2020 4:23:28

Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14 (Скотт Мейерс)

В этой книге отражен бесценный опыт ее автора как программиста на C++. Новые возможности этого языка программирования, появившиеся в стандартах C++11 и C++...

29 12 2020 20:24:46

Циклы в Java Примеры и синтаксис

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

28 12 2020 16:49:39

Использование лямбда-выражений в C#

Пример Использование лямбда-выражений в C# показало, как использовать лямбда выражения для сжатого создания анонимного метода, который принимает параметры...

27 12 2020 11:39:40

Инициализация ComboBox из перечисления в C#

Часто полезно инициализировать ComboBox из перечисления, чтобы пользователь мог выбрать одно из значений перечисления. Вы можете ввести значение в ComboBox...

26 12 2020 9:52:42

Почему я получаю NoClassDefFoundError в Java?

Определение класса можно запросить во время вызова метода или при создании нового экземпляра с использованием нового выражения. NoClassDefFoundError означа...

25 12 2020 18:43:26

Циклы в Java Примеры и синтаксис

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

24 12 2020 2:11:23

Метод Java String charAt()

Java String charAt() возвращает символ, расположенный по указанному индексу в String. Строковые индексы начинаются с нуля и варьируются от 0 до длины() - 1...

23 12 2020 12:43:10

Qt 5.3. Профессиональное программирование на C++ (Шлее М.)

  Книга посвящена разработке приложений для Windows, Mac OS X и Linux с использованием библиотеки Qt версии 5.3. Подробно рассмотрены возможности, предостав...

22 12 2020 20:40:55

Как открыть и закрыть файл в Python

Python имеет встроенную функцию open(), чтобы открыть файл, он возвращает что-то, называемое файловым объектом. Файловый объект содержит методы и атрибуты,...

21 12 2020 17:49:15

Использование метода File.Replace для резервного копирования файлов на C#

В этом примере показано, как использовать метод File.Replace для создания двухуровневой системы резервного копирования журнала. Пример Сделать файл журнала...

20 12 2020 17:16:55

1С:Предприятие. Бухгалтерский учет. Секреты работы (Наталья Рязанцева)

Книга "1 С: Предприятие. Бухгалтерский учет. Секреты работы" посвящена системе программ ведения автоматизированного учета на предприятиях, в организациях и у...

19 12 2020 11:32:44

Разница между HashSet и HashMap в Java

Как следует из названий, HashMap является ассоциативной Map, а HashSet - это просто Set. Но они совершенно разные конструкции. HashMap - это реализация инт...

18 12 2020 1:18:49

Перезапустите диспетчер очереди печати в C#

Время от времени мой компьютер запутывается и думает, что принтер отключен. Это не так уж плохо, за исключением того, что Windows не предоставляет простой...

17 12 2020 6:50:18

Увеличьте и прокрутите изображение, нарисованное на C#

Эта программа позволяет масштабировать и прокручивать изображение, нарисованное программой. Программа содержит Panel с AutoScale, установленным в true. Вну...

16 12 2020 18:14:48

Python. Карманный справочник (Марк Лутц)

Этот краткий справочник по Python карманного типа обновлен с учетом версий 3.4 и 2.7 и очень удобен для наведения быстрых справок в процессе разработки про...

15 12 2020 4:52:38

Глобальные переменные в JavaScript

Как и другие языки программирования, JavaScript также имеет локальные и глобальные переменные. В JavaScript объекты и функции также являются переменными. О...

14 12 2020 15:12:31

Нарисуйте звезды внутри полигонов в C#

В этом примере показано, как рисовать звезды внутри многоугольника, подключая каждую M-ю вершину по мере ее рисования. Если многоугольник имеет N сторон, а...

13 12 2020 20:39:40

Разница между статическими и нестатистическими методами Java

Статический метод принадлежит классу, а нестатический метод принадлежит объекту класса. Статические методы полезны, если у вас есть только один экземпляр,...

12 12 2020 12:26:59

Отправлять распечатку непосредственно на конкретный принтер в C#

Код устанавливает имя принтера, а затем вызывает метод PrintDocument объекта Print для немедленной отправки распечатки на этот принтер. Источник: http://cs...

11 12 2020 18:57:59

Простой регистратор событий в C#

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

10 12 2020 15:10:21

Алгоритм Brute-Force в C#

В этой статье мы узнаем о реализации алгоритма в C# Brute-Force.Brute-force search или исчерпывающий поиск, также известный как генерация и тест,...

09 12 2020 6:24:42

Что используется для создания строки Unicode в Python?

Кодировка символов сообщает компьютеру, как интерпретировать необработанные нули и единицы в реальных символах. В настоящее время существует множество разл...

08 12 2020 15:22:24

В чем разница между JDK и JRE?

JDK является акронимом для Java Development Kit. Это набор программных компонентов, который используется для разработки приложений на основе Java, включает...

07 12 2020 14:22:15

Программирование на Java и С# для студента (О. В. Герман, Ю. О Герман)

Рассмотрены основные вопросы программирования на языках JAVA и С#, включая их сравнительное описание как двух важнейших и весьма сходных прикладных платфор...

06 12 2020 7:59:53

Какова цель класса Runtime и System?

Класс System содержит несколько полезных полей и методов класса. Целью класса System является обеспечение доступа к системным ресурсам. Это последний класс...

05 12 2020 9:43:54

Получить имя первого дня недели в C#

Различные культуры начинают неделю с другого первого дня недели. Например, некоторые культуры начинают неделю с понедельника, а другие начинают с воскресен...

04 12 2020 9:46:20

Как рассчитать разницу дат в Java

Есть много способов найти разницу между датами. Ниже приведен самый простой способ найти разницу между двумя датами. Вы можете просто взять число миллисеку...

03 12 2020 1:25:56

If, else, case в Bash

В Bash, If утверждения очень полезны.  В этом разделе нашего урока вы узнаете, как вы можете использовать, If, else, elif, case инструкции в ваших сценариях Bash....

02 12 2020 8:15:52

Как выполнить скрипт Python на Unix

В Unix он работает обычно следующим образом: Как самая первая строка вашего файла, используя путь для того, где интерпретатор Python установлен на вашей пл...

01 12 2020 20:28:27

Ошибка компиляции "Can not Find Symbol" в Java

Ошибки « Не удается найти символ» обычно возникают, когда вы пытаетесь ссылаться на необъявленную переменную в коде. Ошибка « Не удается найти символ» означа...

30 11 2020 0:10:53

Что такое виртуальная машина Java?

Java Virtual Machine (JVM) - это спецификация, предоставляющая среду выполнения, в которой может быть запущен Java-байт-код. Как следует из названия, JVM д...

29 11 2020 0:14:30

Инициализация элементов управления DataGridView с объектами в C#

В этом примере показано, как легко инициализировать элементы управления DataGridView, чтобы отобразить свойства элементов. В этом примере используется след...

28 11 2020 4:39:31

Рисуем деревья вертикально или горизонтально в C#

Пример Обработать общие события мыши TreeNode в C# показывает, как создать общий класс узлов, который может рисовать деревья с узлами, которые содержат что...

27 11 2020 14:55:55

Преобразование между байтовыми массивами и шестнадцатеричными строками в C#

В этом примере используются методы расширения для преобразования между байтовыми массивами и шестнадцатеричными строками. Он добавляет метод расширения ToH...

26 11 2020 23:14:10

Оператор if-else в Java Примеры и синтаксис

Принятие решений является важной частью программирования. Он используется для указания порядка выполнения операторов. На этом уроке вы узнаете, как создава...

25 11 2020 6:39:13

Введение в потоки Thread в Java

В чем разница между Reader и InputStream в Java Процесс представляет собой экземпляр выполняемой компьютерной программы. Процесс может выполняться процессо...

24 11 2020 22:25:19

Как защитить код Python?

Сама природа Python делает задачу защиты исходного кода сложной, потому что ничто не может быть защищено от обратной инженерии. Python, являющийся интерпре...

23 11 2020 22:53:49

Программирование Java для начинающих

Обучение программе означает научиться решать проблемы с помощью кода. Эти простые примеры программирования полностью предназначены для начинающих, которые...

22 11 2020 17:59:19

Самоучитель C++ (Г. Шилдт)

Необходимость в переработке и дополнении предыдущего издания книги вызвана в первую очередь выходом в свет долгожданного для программистов всего мира едино...

21 11 2020 0:39:49

Нарисуйте закругленные прямоугольники в C#

Библиотека GDI + предоставляет множество методов для рисования фигур, таких как прямоугольники, эллипсы, линии и дуги. К сожалению, он не обеспечивает мето...

20 11 2020 21:13:19

Hello World! Первая программа на Java

Наиболее распространенным примером первой Java-программы является знаменитый Hello World! программа. Прежде чем перейти к первой программе Java, вы должны...

19 11 2020 2:49:21

Используйте оператор is в C#

Оператор is позволяет определить, можно ли преобразовать объект в определенный тип. Например, предположим, что класс Student наследуется от Person и что st...

18 11 2020 19:35:17

Как пройти DOM

DOM является основой почти всего, что работает JavaScript с браузером и веб-документами. Это интерфейс, который позволяет нам взаимодействовать с контентом...

17 11 2020 0:50:21

Как настроить объект на null, помогая сборке мусора?

Не обязательно. Объект становится пригодным для сбора мусора, когда нет живых потоков, которые содержат ссылку на объект. Явное обнуление - это просто прак...

16 11 2020 23:56:24

Есть ли инструмент для поиска ошибок или выполнения статического анализа?

PyChecker - это инструмент для поиска ошибок в исходном коде python. Он обнаруживает проблемы, которые обычно попадают в компилятор для менее динамических...

15 11 2020 7:11:56

7 практических занятий по программированию в 1С 8.хх (Клюев В.В.)

7 практических занятий по программированию в 1 С 8.хх это пособие для освоения программирования и конфигурирования в системе 1 С: Предприятие 8.хх, на основе...

14 11 2020 13:32:19

Класс Java Scanner

Класс Java Scanner - это класс в пакете Java.util, который позволяет пользователю считывать значения различных типов. Это простой текстовый сканер, который...

13 11 2020 7:23:35

Сделайте строковые расширения для URL-кодирования и декодирования строк в C#

Следующий код создает методы расширения для строкового класса, который позволяет преобразовывать пробелы в строку «& amp; nbsp;» и этот URL кодировать и де...

12 11 2020 14:43:59

Список поставщиков OLE DB, установленных в системе на C#

В этом примере показано, как вы можете указать поставщиков OLE DB, установленных в системе. ( Недавно мне пришлось запускать более старую программу в новой...

11 11 2020 8:54:53

Как определить тип экземпляра и наследование в Python

Метод isinstance() проверяет, является ли объект экземпляром класса, тогда как метод issubclass() запрашивает, является ли один класс подклассом другого кл...

10 11 2020 16:46:29

Нарисуйте ковер Sierpinski в C#

В этом примере показано, как нарисовать ковер Sierpinski, тип фрактала, известный как прокладка. Должности Нарисуйте прокладку Серпинского в C# и...

09 11 2020 14:38:38

Самоучитель С#. Начала программирования (Элеонора Ишкова)

Данная книга является превосходным и эффективным учебным пособием для изучения языка программирования С# с нуля. Правила и приемы С# иллюстрируются програм...

08 11 2020 15:14:33

Сохранение цветовой палитры в настройках программы на C#

Пример Сделать постоянную цветовую палитру в C# показывает, как программа может использовать настройки для сохранения и восстановления цветовой палитры. Пр...

07 11 2020 7:29:24

RandomAccessFile в Java

Java RandomAccessFile обеспечивает несущественный доступ к файлам. Он ведет себя как большой массив байтов, хранящихся в файловой системе. Это означает, чт...

06 11 2020 4:39:19

Преобразования типов в C#

Что такое конверсии в C#? Преобразование - это механизм преобразования значения одного типа в эквивалентное значение другого типа.  Давайте рассмотрим ниже...

05 11 2020 7:21:53

Почему мне нужно переопределить методы equals и hashCode в Java?

В Java каждый объект имеет доступ к методу equals(), поскольку он наследуется от класса Object. Если два объекта равны в соответствии с методом equals (Obj...

04 11 2020 19:21:41

Является ли Java «pass-by-reference» или «pass-by-value»?

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

03 11 2020 6:25:20

Базовые типы данных Java

В Java, объектах и примитивах есть две основные категории данных. Все члены данных и локальные переменные должны иметь тип данных, который является либо пр...

02 11 2020 10:50:40

Быстрое преобразование изображения в оттенки серого в C#

В этом примере показано, как можно быстро преобразовать изображение в оттенки серого с помощью класса Bitmap32, описанного в сообщении Используйте класс Bi...

01 11 2020 2:11:41

Размеры файлов анализа в KB, MB, GB и т. д. В C#

Пример Формат файлов формата в К Б, М Б, Г Б и т. д. В C# показывает, как преобразовать число в строку, отформатированную в К Б, М Б и т. д. Этот пример делает...

31 10 2020 20:44:56

Как найти слово под мышью в элементе управления RichTextBox в C#

Следующий метод WordUnderMouse возвращает слово под мышью в RichTextBox. В коде используется метод RichTextBox управления GetCharIndexFromPosition, чтобы п...

30 10 2020 7:30:21

Использование растрового изображения для значка в C#

Вы не можете установить свойство Icon формы, равное растровому изображению. К счастью, достаточно легко создать значок из растрового изображения. В этом пр...

29 10 2020 22:44:27

Что такое сборщик мусора в Java?

Для многих программистов управление памятью Java является одной из наиболее привлекательных функций, потому что Java-программисту никогда не приходится име...

28 10 2020 16:49:25

Метод time.sleep() в Python

Метод python sleep(), используемый для приостановки выполнения для заданного времени (в секундах). Мы можем использовать функцию ожидания python, чтобы ост...

27 10 2020 17:44:41

Список всех файлов в папке в Java

Как читать все .txt-файлы в папке Подсчет количества файлов в каталоге с помощью Java Источник: http://net-informations.com/Java/files/folder.htm...

26 10 2020 5:37:45

Сложение, вычитание, умножение, деление, модуль в Bash

В зависимости от того, какой тип работы вы хотите, чтобы ваши сценарии выполнялись, вы можете в конечном итоге использовать арифметику много или не много. ...

25 10 2020 0:10:16

Как сделать стрельбу в Unity 2D с пулом объектов

В сегодняшнем уроке мы разберем как сделать стрельбу в Unity 2D с использованием пула объектов (Object pool) для реализации этого менее затратно....

24 10 2020 16:52:35

Нарисуйте цветное колесо цвета в C#

Пример Нарисуйте цветное колесо на 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