Click here to Skip to main content
Licence 
First Posted 30 Jan 2004
Views 137,389
Bookmarked 55 times

Tiny StopWatch Application

By | 30 Jan 2004 | Article
A tiny app for timing things to 1/2 a second or so. My entry for the smallest useful app contest.

Sample Image - stopwatchapp_image.jpg

Introduction

The code for this Windows application is so compact, it is presented here inline. Belying its small size, however, the app actually solves a real-world problem, namely the need to measure events of a few minutes' duration to about a half-second granularity. How long does Photoshop take to launch? How long have I been on the phone? "I'll bring your stapler back in five minutes." Yeah, right. The Radio Shack Deluxe Sports Stopwatch (63-5017) costs $19.99.

Background

This is my entry in the imaginary "smallest useful app" contest--the entire app requires just 16 lines of user code. Thanks to .NET, the exe file is just 12.5k.

The Source Code

As they do in Microsoft Knowledgebase How-To articles, here are the step-by-step instructions:

  1. Start Microsoft Visual Studio .NET
  2. On the File menu, point to New, and then click Project
  3. Under Project Types, click Visual Basic Projects
  4. Under Templates, click Windows Application. Form1 is created.
  5. Change Form1's Properties: .Text="Click to Start", .FormBorderStyle="FixedToolWindow", .Size="192,64"
  6. Place a new Label control anywhere on the form. Label1 is created.
  7. Change Label1's Properties: .Text="StopWatch", .Dock="Fill", .Font="Georgia, 24pt", .TextAlign="MiddleCenter". Select foreground and background colors to taste (the example is .BackColor=Hot Track, .ForeColor=Menu).
  8. Place a new Timer control on the form. Timer1 is created.
  9. Right-click Form1, and then click View Code
  10. Add the following code to the Form1 class:
    Dim startTime As DateTime

    Private Sub Timer1_Tick(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim span As TimeSpan = DateTime.Now.Subtract(startTime)
        Label1.Text = span.Minutes.ToString & ":" & _
        span.Seconds.ToString & "." & span.Milliseconds
    End Sub

    Private Sub Label1_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles Label1.Click
        If (Timer1.Enabled) Then
            Me.Text = "Click to Re-start"
            Timer1.Stop()
        Else
            startTime = DateTime.Now()
            Me.Text = "Click to Stop"
            Timer1.Start()
        End If
    End Sub

To use the stopwatch, click inside its window. To stop it, click again. Clicking again will reset the stopwatch to 0:0.0 and start it counting again. For fancy effects like lap timing, just launch several copies of the StopWatch app at once.

Points of Interest

There is nothing very interesting here except how an app so simple and small can be surprisingly useful.

History

01/31/04 AD: Initial

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Alastair Dallas

Web Developer

United States United States

Member

Alastair Dallas is a programmer, systems architect, and information designer with over 20 years experience at companies including Ashton-Tate, Lotus, Netscape, Documentum, and a wide variety of startups. Languages include C#, C, C++, Java, JavaScript, Perl, Python, and VB (in alphabetical order) as well as DHTML, XML, and related technologies. He has written 3 books, 2 on computer topics, and is President of Infospect Press.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 3 Pinmembermavrudebog7:06 16 Mar '12  
GeneralDateTime Pinmemberrootjumper3:56 27 Mar '09  
QuestionTimer Pinmemberrathna4code6:02 6 Mar '09  
Questioninterval time Pinmemberhendry Gunawan17:43 3 Mar '09  
QuestionTime Interval Pinmemberhendry Gunawan17:36 3 Mar '09  
GeneralGood!! Pinmembernma2020003:19 18 Mar '08  
GeneralGOOD Pinmemberdubbele onzin19:10 13 Nov '07  
GeneralThx Man It works!!!! Pinmemberdissanayake5:22 1 Oct '07  
Generalthank you soo much PinmemberSyed Ali hasan3:32 22 Aug '07  
GeneralSmall suggestion: use Environment.TickCount Pinmembernmitha10:50 4 Jan '07  
GeneralCompact framework PinmemberPhilvis19954:07 5 May '06  
Thanks! This article was very useful for a PDA application I'm writing. The only alterations I made were:
 
- the timer's start and stop methods were not recognised so they were replaced with Timer1.Enabled = True or Timer1.Enabled = False
 
- The label's click event wouldn't fire so I switched the label for a button
QuestionHelp? Pinmemberkevinbaum3:20 15 Mar '06  
GeneralThanks Pinmemberarpita200621:17 20 Feb '06  
QuestionHow do I get the Timer to start from Zero instead of the current Time? Pinmemberensuvari3:48 8 Nov '05  
GeneralThanks Pinmembervbtango16:52 20 Oct '05  
QuestionContinue the counter instead of resetting? Pinmemberpiniata21:55 21 Apr '05  
GeneralHelped me out a treat PinmemberVicbelly8:30 17 Mar '05  
GeneralCouldn't get Stopwatch to work PinmemberGreg S.3:54 22 Oct '04  
GeneralRe: Couldn't get Stopwatch to work PinmemberGreg S.12:40 25 Oct '04  
GeneralA good starting point PinmemberMichael Mogensen23:56 20 Mar '04  
AnswerRe: A good starting point PinmemberManaClear14:49 2 Mar '06  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120529.1 | Last Updated 31 Jan 2004
Article Copyright 2004 by Alastair Dallas
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid