winform中执行开始就开始计时,一秒一秒前进,时间格式:00:00:00 执行结束计时结束,得出执行所花费的时间,以下是我写的,但好像不正确。求正确的该怎样写
private DateTime dtStart;
private void timer1_Tick(object sender, EventArgs e)
{
   DateTime mytime=DateTime.Now;
   this.label1.Text = string.Format("{0}:{1}:{2}", (mytime.Hour - dtStart.Hour).ToString().PadLeft(2, '0'), (mytime.Minute - dtStart.Minute).ToString().PadLeft(2, '0'), (mytime.Second - dtStart.Second).ToString().PadLeft(2, '0'));
        }
        
private void button1_Click(object sender, EventArgs e)
{
   dtStart = DateTime.Now;
   this.timer1.Enabled = true;
}这样写的话,执行还没到一分钟就乱掉了

解决方案 »

  1.   

            private DateTime dtStart;
            
            private void button1_Click(object sender, EventArgs e)
            {
                dtStart = DateTime.Now;
                this.timer1.Enabled = true;
            }        private void timer1_Tick(object sender, EventArgs e)
            {
                this.label1.Text = Convert.ToDateTime(((TimeSpan)(DateTime.Now - dtStart)).ToString()).ToString("HH:mm:ss");
            }
      

  2.   

    乱掉的原因是mytime.Second - dtStart.Second获得是2个时间相差的总秒数,比如4分0秒和5分10秒差70秒钟,你的算法结果就是70,你想要的其实是10-0=10,要的是10秒,乱掉总是要等分钟进位以后出现,所以你要过一分钟才看到乱掉。