2016-04-27 5 views
1

я использовал следующую строку кодаКак постоянно обновлять метку с текущим временем?

int pp = DateTime.Now.Hour; 

и это нормально. Я написал

label1.text=pp.tostring(); 

для проверки, и она работает, но если я открываю форму на 19:59 (например.) В label1 появляется 19 и через одну минуту, когда часы 08:00, значение в label1 не меняется и все еще появляется 19, а не 20.

После этого, если я закрою форму и снова ее открою, номер в label1 будет 20.

Как изменить значение из datetime.now.hour в режиме реального времени, пока форма запущена? спасибо

+3

Таймер с событием тика? – LarsTech

+0

Вам нужен таймер. Проверьте управление таймером. –

+0

Используйте таймер и обновите свой интерфейс в своем обработчике 'Tick' (при условии, что это вопрос WinForms). Или сделайте эквивалент в WPF или какой-либо библиотеке пользовательского интерфейса, которую вы используете. – adv12

ответ

3

Поскольку вы используете «форму» терминологию, я предполагаю, что Windows Forms, и самый простой способ будет добавить Timer компонент, установить разумный Interval (разумный смысл , как долго это максимум, который вы может позволить себе отложить, когда в час изменения до метки изменения ... чем выше интервал, тем меньше CPU ваш процесс будет занимать) на него, и на его Tick случае, сделайте ваш:

static void MyTimer_Tick(object sender, EventArgs e) 
{ 
    int pp = DateTime.Now.Hour; 
    label1.text=pp.tostring(); 
} 
2

Вам нужно для реализации Timer и обновите его Elapsedlabel1.text. Просто позвонить DateTime.Now.Hour не достаточно, так как это только обновляет его один раз. Он не устанавливает повторяющийся метод для постоянного обновления.

using System.Timers; 

namespace Example { 
    static Timer _timer; 

    static void Main() { 
     _timer = new Timer(1000); // Update every 1 second. 
     _timer.Elapsed += UpdateMyLabel; 
     _timer.Start(); 
    } 

    static void UpdateMyLabel(object sender, ElapsedEventArgs e) { 
     label1.Text = DateTime.Now.Hour; 
    } 
} 
1

Я бы выделил класс Label и использовал таймер для обновления метки. Как и в ООП;)

Смежные вопросы