質問

How can I run clock while form is open?

I am using this code:

DateTime present = DateTime.Now;

label1.Text = present.Hour.ToString()+ present.Minute.ToString() + present.Second.ToString();

I want a running clock when I open the form and should be able to click other objects while the clock is running.

役に立ちましたか?

解決

You need to create System.Threading.Timer object and on it's Tick event update your label text. Also it's more correct to do

    DateTime.Now.ToString("hhMMss");

or

    DateTime.Now.ToShortTimeString();

instead several .ToString() calls.

The result code will be something like that

    new System.Threading.Timer((state) => { BeginInvoke((Action)delegate() { label1.Text = DateTime.Now.ToShortTimeString(); }); }, null, 1000, 1000);

他のヒント

You can try with the class DispatcherTimer

    DispatcherTimer dpTimer = new DispatcherTimer();

    public MainWindow()
    {
        InitializeComponent();
        dpTimer.Tick += new EventHandler(dpTick);
        dpTimer.Interval = new TimeSpan(0, 0, 1);
        dpTimer.Start();
    }

    private void dpTick(object sender, EventArgs e)
    {
        DateTime present = DateTime.Now;
        timer_label.Content = present.Hour.ToString() + present.Minute.ToString() + present.Second.ToString();
    }

If you want to use the Timer, check this solution:

        new System.Threading.Timer((state) => 
        {
            Action action = () => timer_label.Content = DateTime.Now.ToString("hh:MM:ss");
            Dispatcher.BeginInvoke(action);
        }, null, 1000, 1000);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top