显示时间已过

Pri*_*ton 1 .net c# timer winforms

我需要动态显示经过的时间。我的代码将根据间隔值弹出一条消息。

public void button1_Click(object sender, EventArgs e)
{
    this.TopMost = true;
    DialogResult result1 = MessageBox.Show("Add some notes to your current ticket?",
    "Add Notes",
    MessageBoxButtons.YesNo);


    if (result1 == DialogResult.Yes)
    {
        Timer tm;
        tm = new Timer();

        int minutes = int.Parse(textBox2.Text);
        tm.Interval = (int)TimeSpan.FromMinutes(minutes).TotalMilliseconds;

        tm.Tick += new EventHandler(button1_Click);

        tm.Enabled = true;

        string pastebuffer = DateTime.Now.ToString();
        pastebuffer = "### Edited on " + pastebuffer + " by " + txtUsername.Text + " ###";
        Clipboard.SetText(pastebuffer);

        tm.Start();

    }

    else if (result1 == DialogResult.No)
    { 

    }

    this.TopMost = false;
}
Run Code Online (Sandbox Code Playgroud)

如果我在我的间隔中定义了 15 分钟,我如何让倒计时显示在标签中?

Rez*_*aei 5

您应该将结束时间存储在表单级别的字段中,然后在Tick计时器的事件处理程序中检查结束时间和现在之间的差异,并更新要显示倒计时计时器的标签:

private DateTime endTime;
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
private void button1_Click(object sender, EventArgs e)
{
    var minutes = 0;
    if (int.TryParse(textBox1.Text, out minutes) && timer.Enabled == false)
    {
        endTime = DateTime.Now.AddMinutes(minutes);
        timer.Interval = 1000;
        timer.Tick -= new EventHandler(timer_Tick);
        timer.Tick += new EventHandler(timer_Tick);
        timer.Start();
        UpdateText();
    }
}
void timer_Tick(object sender, EventArgs e)
{
    UpdateText();
}
void UpdateText()
{
    var diff = endTime.Subtract(DateTime.Now);
    if (diff.TotalSeconds > 0)
        label1.Text = string.Format("{0:D2}:{1:D2}:{2:D2}",
                                   diff.Hours, diff.Minutes, diff.Seconds);
    else
    {
        this.Text = "00:00:00";
        timer.Enabled = false;
    }
}
Run Code Online (Sandbox Code Playgroud)