【问题标题】:How To Make a StopWatch With C#如何用 C# 制作秒表
【发布时间】:2016-09-17 08:06:39
【问题描述】:

我只是想问我是否可以用我试过的 C# 制作秒表:

        private void button2_Click(object sender, EventArgs e)
    {
        timer1.Start();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        int st = 00;
        int m = 00;

        string stime = "00:00";
        if(st == 60)
        {
            m++;
            st = 00;
        }
        else
        {
            st++;
        }
        if (m == 60)
        {
            m = 00;
        }
        if(st < 10)
        {
            st = 0 + st;
        }
        if(m < 10)
        {
            m = 0 + m;
        }
        stime = m.ToString() + ":" + st.ToString();
        label3.Text = stime;
    }

这个但是没有用。我的定时器设置好了,定时器的间隔是1000ms。有人可以帮我吗?

【问题讨论】:

  • 您是否在代码中初始化了间隔?它不在发布的代码中。
  • 我在 Visual Studio Designer 上设置了间隔
  • 这只是用于学习目的还是用于代码项目?如果它是一个代码项目,那么您应该使用 Stopwatch 中的构建。如果是出于学习目的,我建议您看一下课堂上的构建:github.com/mono/mono/blob/master/mcs/class/System/…
  • 我避免使用设计器来设置属性,因为实际设置的值并不明显。在调试代码时,您不能只查看一个文件来找出错误。间隔以毫秒(不是秒)为单位,因此请确保将间隔设置为正确的值。

标签: c# winforms


【解决方案1】:

在我看来,比起秒表,你更适合做手表?

如果您正在制作秒表,我认为您需要在班级中使用一个字段/属性来保存开始时间:

private DateTime _start;
private void button2_Click(object sender, EventArgs e)
{
    _start = DateTime.Now;
    timer1.Start();
}

然后在 timer1_Tick 中你可以这样做:

private void timer1_Tick(object sender, EventArgs e)
{
    TimeSpan duration = DateTime.Now - _start;
    label3.Text = duration.ToString(<some format string>);
}

您当前在 timer1_Tick 中的代码似乎只有局部变量,因此总是会产生相同的时间? :-)

【讨论】:

  • Visual Studio 给我一个错误。那就是说我未定义的变量
  • @DorukAyar:但您必须将 _start 声明为具有 button2_Click() 和 timer1_Tick() 过程的类的字段,正如我在上面第一行代码中所示。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
相关资源
最近更新 更多