Сегодня мы создадим программу, которая будет при запуске показывать нам цифровые часы и дату.
Для начала создаём форму. У нас она такая:
Всё, что у нас тут есть — это два Label’a + Timer.
Настраиваем Label’ы, переименовываем, увеличиваем шрифт — всё по усмотрению программиста.
Теперь переходим к коду, щёлкнув правой кнопкой мыши по форме и выбрав соответствующую команду.
Сразу после строки public partial class Form1 : Form объявим таймер. Делается это так:
| 1 2 3 | public partial class Form1 : Form     {         Timer timer = new Timer(); | 
Объявляем мы его в самом начале, чтобы все функции, которые у нас будут внутри, принимали его в расчёт (если он будет объявлен в какой-то одной отдельной функции, то вторая функция не будет его видеть).
Теперь рам надо включить наш таймер. Для этого мы возвращаемся в форму и дважды щёлкаем на неё левой кнопкой мыши.
Нас переносит в код, который будет срабатывать при загрузке формы (то есть, с самого начала работы программы). Здесь мы пишем следующее:
| 1 2 3 4 5 6 | private void Form1_Load(object sender, EventArgs e)  {      timer.Interval = 1000;        timer.Tick += new EventHandler(timer1_Tick);      timer.Start();            } | 
Первая строка устанавливает интервал обновления таймера. Число 1000 означает, что таймер будет обновляться каждые 1000 миллисекунд, т.е. каждую секунду.
Вторая строка очень важна — она срабатывает при каком-либо событии «Tick» в таймере. У нас она будет срабатывать каждые 1000 миллисекунд, пока включен таймер. Именно благодаря ней пользователь будет видеть смену часов, минут и секунд на циферблате. Само событие мы опишем ниже в функции timer1_Tick.
Третьей строкой мы запускаем наш таймер.
Теперь мы возвращаемся в форму и дважды кликаем на значке таймера ( ) внизу.
) внизу.
Вот и открылась у нас функция timer1_Tick. Мы запишем в неё определённый код, и каждые 1000 миллисекунд этот код будет исполняться заново.
Внутри нашей функции мы сначала объявим некоторые переменные:
| 1 2 3 4 5 | int h = DateTime.Now.Hour; int m = DateTime.Now.Minute; int s = DateTime.Now.Second; string time = ""; | 
В переменную h мы будем записывать часы, в переменную m — минуты, в s — секунды.
Переменная строкового типа time нам нужна, чтобы мы записали первые три переменные в строку для вывода в форму.
Теперь мы сделаем один «трюк», предназначенный скорее для красоты вида, нежели для функционала и качества работы.
Дело в том, что мы привыкли видеть форму времени в виде, грубо говоря, 00:00:00, то есть две цифры на вывод часов, две цифры на минуты и две цифры на секунды (например, 06:03:09 или 12:01:05).Время же из свойства DateTime.Now не имеет нулей перед цифрами, которые меньше десяти (иначе говоря, время будет выглядеть так: 6:3:9 или 12:1:5). Согласитесь, это не очень удобно и привычно видеть. Поэтому мы исправим благодаря оператору условия if.
| 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 |  if (h < 10)  {      time += "0" + h;  }  else  {      time += h;  }  time += ":";  if (m < 10)  {      time += "0" + m;  }  else  {      time += m;  }  time += ":";  if (s < 10)  {      time += "0" + s;  }  else  {      time += s;  } | 
Сначала мы задаём условие, что если h<10, то есть если часы показывают время от 0 до 9 часов, то в таком случае в строку time мы добавляем перед h ноль, чтобы у нас получилось не просто время 5 часов, а 05 часов. Иначе (else) мы просто добавляем в time переменную h без нулей.
То же самое мы проделываем с минутами и секундами, не забывая при этом между часами и минутами, а также минутами и секундами поставить двоеточие.
Теперь давайте, для большего понимания, что мы сделали, поговорим о работе строки time. Мы поочерёдно записываем в неё часы (с нулём или без), минуты (аналогично) и секунды (аналогично). Между ними мы ставим двоеточие. Именно поэтому после первых двух условий у нас имеются строки
| 1 |  time += ":"; | 
Итак, в самом начале работы программы строка time у нас пустая (мы выше объявили её такой, с правой стороны поставив пустые кавычки: string time = «»). Как только запускается таймер, в строку сначала записываются часы, принимая во внимание, больше ли 10 это время или меньше.
То есть вместо пустого пространства в строке теперь что-то типа «12», если у нас в данный момент 12 часов. После этого в строку записывается двоеточие, теперь строка выглядит так: «12:». Затем мы записываем минуты, опять учитывая, сколько знаков в них. Получится, например, так :»12:06″. Опять ставим двоеточие: «12:06:». Заканчивается запись секундами: «12:06:34». И перезаписываться наша строка от пустоты до полной формы времени будет каждые 1000 миллисекунд, то есть каждую секунду, чтобы мы видели, как меняется циферблат секунд, а впоследствии и минут с часами.
Однако пока что наша строка просто существует, но пользователь не видит её, не видит, сколько время в данный момент.
Поэтому мы выводим нашу строку в форму через Label. У нас это label2, с наиболее крупным шрифтом.
| 1 | label2.Text = time; | 
Наши часы готовы. Уже можно наблюдать за ходом времени, запустив проект. Но мы ещё решили выставить дату. Делается это аналогичным образом. Поэтому ниже мы пишем:
| 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 | string data = ""; int day = DateTime.Now.Day; int month = DateTime.Now.Month; int year = DateTime.Now.Year; if (day < 10) {     data += "0" + day; } else {     data += day; } data += "."; if(month<10) {     data += "0" + month; } else {     data += month; } data += "."; data += year; label1.Text = data; | 
Разница лишь в том, что мы добавляем нули только перед днями и месяцами, года у нас и так четырёхзначные, а вместо двоеточий мы ставим просто точки. В итоге у нас получается примерно такой вид: 16.02.2015.
И мы так же записываем это всё в Label, но уже в другой.
В итоге у нас получается вот такая программка:
Скачать исходник программы на языке C# можете ниже:
Скачать исходник
Поделиться в соц. сетях:


спасиб
Спасибо, просто отлично описано и объяснено
Спасибо. Пригодилось