计时器应用程序的一点帮助(请)

时间:2011-01-07 15:53:00

标签: c# winforms

我主要做web内容,但我一直在玩一个简单的windws表单app。我想创建一个计时器,一个带有启动和停止按钮的排序秒表。我不知道如何开始所以我用Google搜索了一些例子。找到一个和kuddos给原始编码器分享它,但我不能让它工作。它最初是作为控制台应用程序编写的,所以我的选择是如何将它绑定到Windows窗体。

我开始创建一个Windows窗体应用程序,在表单中添加了一个标签和两个按钮。接下来,我将program.cs重命名为StopWatch.cs并粘贴此代码。创建了一个标签并指定了将时钟返回到标签文本属性的方法。但这不是工作 - 所以希望你评论我做错了什么。请参阅下面的代码。谢谢 - Risho。

using System;
using System.Windows.Forms;

namespace StopWatch
{
    public class StopWatch
    {
        private DateTime startTime;
        private DateTime stopTime;
        private bool running = false;


        public void Start()
        {
            this.startTime = DateTime.Now;
            this.running = true;
        }


        public void Stop()
        {
            this.stopTime = DateTime.Now;
            this.running = false;
        }


        // elaspsed time in milliseconds
        public double GetElapsedTime()
        {
            TimeSpan interval;

            if (running)
                interval = DateTime.Now - startTime;
            else
                interval = stopTime - startTime;

            return interval.TotalMilliseconds;
        }


        // elaspsed time in seconds
        public double GetElapsedTimeSecs()
        {
            TimeSpan interval;

            if (running)
                interval = DateTime.Now - startTime;
            else
                interval = stopTime - startTime;

            return interval.TotalSeconds;
        }


        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        public static void Main(String[] args)
        {
            StopWatch s = new StopWatch();
            s.Start();

            s.Stop();

            Label lblTimer = new Label();

            lblTimer.Text = s.GetElapsedTime().ToString();

            Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

3 个答案:

答案 0 :(得分:2)

你的秒表课很好。但是你的主要方法不是。

您需要将标签放在Form1上,并在事件上设置标签文本,例如单击按钮。

您可以按照以下简单步骤进行操作 -

  1. 转到表单的设计视图 Visual Studio
  2. 打开工具箱并拖放 标签和按钮控件 形式
  3. 在属性窗口中给出 适当的控件名称 编辑名称属性
  4. 双击设计中的按钮 查看,您将导航到 它在代码视图中的单击事件。
  5. 在点击中设置标签文字 按钮事件。
  6. 我用Google搜索并发现这些资源是学习winForms的好起点

    http://www.google.co.in/#sclient=psy&hl=en&q=winforms+tutorials&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=98a02fd89f148227

答案 1 :(得分:1)

在我看来,你在错误的文件中,你重命名的program.cs文件创建了表单而没有别的。你想在表单中做你的秒表代码。 form1.cs文件(我认为它被称为)。

答案 2 :(得分:0)

那么,你在做什么,基本上是重写System.Diagnostics.Stopwatch类吧?

那么,如果您将秒表类重命名为Program并删除Main方法中的所有代码,除了这些行,该怎么办:

 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new Form1());

然后,在你的Form1课程中,

 using System.Diagnostics;

 public partial class Form1 : Form {

     Stopwatch s;

 ...

     private void btnStart_Click(object sender, EventArgs e)
     {
         if (s == null)
              s = new Stopwatch();

         s.Restart();
     }

     private void btnEnd_Click(object sender, EventArgs e)
     {
          if (s == null)
              return;

           s.Stop();

          lblElapsed.Text = s.Elapsed;
     }
 ...      

 } 

这要求设计师有三件事:

  • 两个按钮,分别称为btnStart和btnEnd

  • 一个名为lblElapsed的标签。

btnStart和btnEnd必须连接它们的Click方法,并分别插入代码。

请注意,这不会不断更新标签中的文字,只会在您每次点击停止按钮时更新。

我希望这会对你有所帮助。