2011-01-07 56 views
0

我主要是做網絡的東西,但我一直在玩一個簡單的windws表單應用程序。我想創建一個計時器,一個帶有開始和停止按鈕的秒錶。我不知道什麼時候開始,所以我搜索了一些例子。找到一個,並與原始編碼器共享它,但我不能讓它工作。它原本是作爲控制檯應用程序編寫的,所以我的分類是如何將它與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()); 
     } 
    } 
} 
+0

你可以包括你得到的錯誤。 – 2011-01-07 15:56:52

+3

.NET中有一個隨時可用的StopWatch-Class。 – Bobby 2011-01-07 16:01:12

回答

0

那麼,你在做什麼,基本上是重寫System.Diagnostics.Stopwatch類的權利?

所以,如果你的秒錶類重命名爲Program並刪除所有代碼在Main法,但這些行:

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

,然後在你的Form1類,

這就要求設計師有三樣東西:

  • 兩個按鈕,分別名爲btnStart和btnEnd

  • 標籤名爲lblElapsed。

btnStart和btnEnd必須有自己的Click方法掛鉤,並分別插入代碼。

請注意,這不會不斷更新標籤中的文字,它只會在每次點擊停止按鈕時更新。

我希望這可以幫助你。

2

你的秒錶類很好。但是你的主要方法不是。

您需要將您的標籤放在Form1上,並將標籤文本設置爲像單擊按鈕這樣的事件。

你可以按照這個簡單的步驟 -

  1. 後藤在 Visual Studio中
  2. 打開窗體的設計視圖中工具箱和拖放一個 標籤和一個按鈕控件 形式
  3. 在屬性窗口給 控件的適當名稱由 編輯名稱屬性
  4. 雙擊desi中的按鈕gn 視圖,您將在代碼視圖中導航到 其單擊事件。
  5. 設置標籤文本中點擊 事件的按鈕。

我用Google搜索,發現這些資源,良好的出發點,以學習的WinForms

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

1

在我看來,你是在錯誤的文件,該文件重命名Program.cs文件創建形式,沒有別的。你想要在表單本身做你的秒錶代碼。 form1.cs文件(我認爲這就是所謂的)。